To support multiple native build toolchains, Open 3D Engine (O3DE) uses the CMake build tools . While most configurable build systems make it difficult to work cross-platform, CMake is intentionally designed to take generic configuration files and generate toolchain-specific project files, and then perform native builds.

Once you’ve registered O3DE and created an O3DE project, you can build your project with these commands:

cd <project-directory>
cmake -B build/windows -S . -G "Visual Studio 16" -DLY_3RDPARTY_PATH=<absolute-path-to-packages>
cmake --build build/windows --target <ProjectName>.GameLauncher Editor --config profile -- -m
Use Visual Studio 16 as the generator for Visual Studio 2019, and Visual Studio 17 for Visual Studio 2022. For a complete list of common generators for each supported platform, refer to Configuring projects.

cd <project-directory>
cmake -B build/linux -S . -G "Ninja Multi-Config" -DLY_3RDPARTY_PATH=<absolute-path-to-packages>
cmake --build build/linux --target <ProjectName>.GameLauncher Editor --config profile

Builds created with these commands are located in the <project-directory>/<build-directory>/bin/profile directory.

Refer to Configure and Build for a list of other build configurations.

O3DE requires CMake 3.22.0 or higher.

Section topics

Configure and BuildThe full details on how to configure and build O3DE core, Gems, and projects.
Build Generated Source FilesLearn how to use the AzAutoGen automation tool to generate source files when building a target.
Engine and Project DistributionInstructions on how to separate engine developer and project developer workflows, by creating fixed binaries to distribute to project teams.
O3DE PackagesLearn about the O3DE package system that’s used to ship binaries along with your Gem or project.
TroubleshootingHow to debug and troubleshoot CMake and build problems.
CMake Settings ReferenceReference for user-configurable CMake settings specific to O3DE.
Windows SupportPrerequisites for building on Windows 10.
Linux SupportPrerequisites for building on Linux.