58 lines
2.3 KiB
Markdown
58 lines
2.3 KiB
Markdown
|
## 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(<all-my-plugin-related-targets> PROPERTIES CXX_VISIBILITY_PRESET hidden)
|
||
|
```
|
||
|
|
||
|
## Todo
|
||
|
Test build for Windows, Mac and mingw.
|