Compiling a C++ worker
Supported compilers and runtimes
The C++ worker SDK requires a C++11-compliant compiler.
- Windows: Visual Studio 2015 or later.
- macOS and Linux: Tested with Xcode 8 on macOS, and GCC 5.4.0 on Linux. Make sure
to use the
The C++ worker SDK dynamically links to the C and C++ runtimes.
- For Visual Studio, the SDK is configured to link against all the multi-threaded runtimes (dynamic, dynamic-debug, static and static-debug). Please make sure to select the correct package for your project when obtaining the SDK. Usually, MSVC projects will use the multi-threaded dynamic runtime (/MD) in the Release configuration, and the multi-threaded dynamic debug runtime (/MDd) in the Debug configuration. Note that this means that Windows clients depend on Visual C++ Redistributable for Visual Studio 2015 being installed.
Compiling and linking
In order to build a C++ worker, you need to include header files from, and link against, the following:
The C++ worker SDK. This is distributed as a package containing header files in
<package dir>/include, and a number of static libraries in
<package dir>/lib. You’ll need to link against all the static libraries in the
Generated code. These are the
.ccfiles generated by the SpatialOS schema compiler (
spatial schema) from your
.schemafiles, and their corresponding header files.
Building for a cloud deployment
After building a project, a certain directory structure is expected when
uploading an assembly.
Usually, we provide generated build scripts,
which handle this for you. However, we currently don’t do this for C++ workers. Therefore, the steps of
the Build task for your worker (within
Create a zip file containing the worker binary with a name matching the value for the
artifact_namespecified in the managed worker configuration, under
Place the zip file in
build/assembly/worker/, so it is picked up when uploading an assembly during
spatial cloud upload <assembly name>.
SpatialOS runs managed workers as part of a cloud deployment in a Linux environment running Ubuntu 16.04.2 LTS. Therefore, you need to build a binary that can be executed in this environment. If you are developing on Windows or macOS, we suggest installing Ubuntu 16.04.2 LTS inside a virtual machine using VirtualBox, and making use of the experimental Linux support. This is not required for local deployments during development: just for cloud deployments.