godot-cpp/doc/cmake.md

2.3 KiB

CMake

cmake arguments

CMAKE_BUILD_TYPE: Compilation target (Debug or Release defaults to Debug)

godot-cpp cmake arguments

  • GODOT_GDEXTENSION_DIR: Path to the directory containing GDExtension interface header and API JSON file
  • GODOT_SYSTEM_HEADERS: Mark the header files as SYSTEM. This may be useful to suppress warnings in projects including this one.
  • GODOT_WARNING_AS_ERROR: Treat any warnings as errors
  • GODOT_USE_HOT_RELOAD: Build with hot reload support. Defaults to YES for Debug-builds and NO for Release-builds.
  • GODOT_CUSTOM_API_FILE: Path to a custom GDExtension API JSON file (takes precedence over gdextension_dir)
  • GODOT_PRECISION: Floating-point precision level ("single", "double")

Android cmake arguments

  • CMAKE_TOOLCHAIN_FILE: The path to the android cmake toolchain ($ANDROID_NDK/build/cmake/android.toolchain.cmake)

  • ANDROID_NDK: The path to the android ndk root folder

  • ANDROID_TOOLCHAIN_NAME: The android toolchain (arm-linux-androideabi-4.9 or aarch64-linux-android-4.9 or x86-4.9 or x86_64-4.9)

  • ANDROID_PLATFORM: The android platform version (android-23)

  • More info here

Examples

Builds a debug version:
cmake .
cmake --build .

Builds a release version with clang

CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" .
cmake --build .

Builds an android armeabi-v7a debug version:

cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_NDK=$ANDROID_NDK \
		-DANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-4.9 -DANDROID_PLATFORM=android-23 -DCMAKE_BUILD_TYPE=Debug .
cmake --build .

Protip

Generate the buildfiles in a sub directory to not clutter the root directory with build files:

mkdir build && cd build && cmake -G "Unix Makefiles" .. && cmake --build .

Ensure that you avoid exposing godot-cpp symbols - this might lead to hard to debug errors if you ever load multiple plugins using difference godot-cpp versions. Use visibility hidden whenever possible:

set_target_properties(<all-my-plugin-related-targets> PROPERTIES CXX_VISIBILITY_PRESET hidden)

Todo

Test build for Windows, Mac and mingw.