~/openengine
$ cat docs/guides/macos.md
# building on macOS

macOS supports C++ engine, Editor, and C# scripting builds.

Prerequisites

  • Xcode command-line tools: xcode-select --install
  • CMake 3.20+
  • .NET 9.0 SDK for macOS: Download
  • Vulkan SDK for macOS (optional, for Vulkan backend): Installs MoltenVK + loader

All other third-party C/C++ dependencies (GLFW, shaderc, VMA, etc.) are handled by CMake + vcpkg.

Configure with Scripting Enabled

bash
CONFIG=Debug

# Ninja (recommended)
cmake -S . -B build-macos \
  -G Ninja \
  -DCMAKE_BUILD_TYPE="${CONFIG}" \
  -DENABLE_SCRIPTING=ON \
  -DBUILD_TESTING=ON

# Unix Makefiles
cmake -S . -B build-macos \
  -G "Unix Makefiles" \
  -DCMAKE_BUILD_TYPE="${CONFIG}" \
  -DENABLE_SCRIPTING=ON \
  -DBUILD_TESTING=ON

This bootstraps vcpkg, installs dependencies for the x64-osx or arm64-osx triplet, and configures CoreCLR hosting.

Run Scripting Smoke Tests

bash
chmod +x Tools/Scripts/run-macos-scripting-smoke-tests.sh
./Tools/Scripts/run-macos-scripting-smoke-tests.sh

Validates CoreCLR hosting and compile server via EngineCoreClrSmokeTests and EngineCompileServerSmokeTests ctest entries.

Build the Editor

bash
cmake --build build-macos --config Debug \
  --target Editor -- -j"$(sysctl -n hw.ncpu)"

Produces build-macos/bin/Debug/Editor.

Run IoL + HotReload Harness

bash
chmod +x Tools/Scripts/run-macos-editor-hotreload-iol-test.sh
./Tools/Scripts/run-macos-editor-hotreload-iol-test.sh

Exercises [InitializeOnLoad] and hot-reload behavior. On success, traces appear in Logs/Editor-macOS-IoL-HotReload-ioltrace.log.

Troubleshooting

Vulkan Surface Creation

If the Editor logs Failed to create window surface! Error: -7:

  • Ensure the Vulkan SDK for macOS is installed
  • Ensure VULKAN_SDK is set in your shell
  • If using GLFW < 3.4, update it โ€” GLFW 3.4+ supports glfwInitVulkanLoader for non-standard loader locations

CompileServer Socket Path

If you see Socket path too long, override the pipe path:

bash
export GE_PIPE_PATH=/tmp/openengine-compile-server

Next Steps

enesfrar