Skip to content

Building

This guide covers building Skewer from source. See Installation for dependency setup.

Don't want to build Skewer?

Pre-built binaries are available for every release. See the Pre-built Binaries guide.

Using CMake Presets

The project uses CMake presets for consistent builds. All build commands use --parallel 4 to avoid maxing out your CPU — adjust up if you have a dedicated build machine.

# List available presets
cmake --list-presets

# Configure a preset
cmake --preset relwithdebinfo

# Build with a preset
cmake --build --preset relwithdebinfo --parallel 4

Available Presets

Preset Description
relwithdebinfo Default - Release build with debug symbols (recommended)
debug Debug build with symbols, no optimizations
release Optimized release build (-O3)
release-portable Optimized release build for portable binary bundles
ci CI build with tests enabled

See the full preset list in the CLI Reference for all available presets, including asan and release-milan.

Build Outputs

After building, binaries are located in build/<preset>/:

build/relwithdebinfo/
├── skewer/
│   ├── skewer-render    # Main rendering CLI
│   └── skewer-worker    # Worker for distributed renders
├── loom/
│   ├── loom            # Deep compositor
│   └── loom-worker     # Worker for deep compositing
├── libs/exrio/         # EXR library
└── api/                # Compiled protobuf C++ files

Running Tests

# Build and run tests
cmake --preset ci
cmake --build --preset ci --parallel 4
ctest --preset ci --parallel 4

Building the Go CLI

The Go CLI and Coordinator are built separately from the C++ codebase:

# Ensure Go dependencies are installed
cd orchestration
go mod download

# Build CLI
go build -o skewer-cli ./cmd/cli/

# Build Coordinator
go build -o coordinator ./cmd/coordinator/

The built binaries will be in orchestration/.

Troubleshooting

CMake can't find dependencies

If CMake can't find dependencies, you may need to specify paths:

cmake --preset relwithdebinfo -DCMAKE_PREFIX_PATH=/path/to/libs

Build errors on macOS

If you encounter Apple Silicon build issues, ensure you're using the correct architecture:

cmake --preset relwithdebinfo -DCMAKE_OSX_ARCHITECTURE=arm64

See Also

Clean rebuild

To perform a clean rebuild:

rm -rf build/
cmake --preset relwithdebinfo
cmake --build --preset relwithdebinfo --parallel 4