## 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](https://godot.readthedocs.io/en/latest/development/compiling/compiling_for_android.html) ## Examples ```shell Builds a debug version: cmake . cmake --build . ``` Builds a release version with clang ```shell 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: ``` shell 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: ```shell 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: ```cmake set_target_properties( PROPERTIES CXX_VISIBILITY_PRESET hidden) ``` ## Todo Test build for Windows, Mac and mingw.