mirror of
https://github.com/godotengine/godot-cpp.git
synced 2025-12-31 01:48:45 +03:00
- Added to .gitignore CMakeUserPresets.json
### Configuration:
- Changed python command to use single quotes to make build output log more legible.
- Added GODOT_DEV_BUILD to allow differentiation of debug or Release builds.
- Added find logic for macos Cocoa library
### godot-cpp Changes
- godot-cpp-test is changed to be incorporated into the cmake build as a target.
- Duplicated godot-cpp target into [template_release, template_debug, editor]
- Created {platform}.cmake files mirroring the style of the SCons build.
CMake has a feature called generator expressions for its configuration variables that are evaluated at build time. This allows multi-configuration build systems to properly evaulate options. for msvc, xcode and nijna multi-config.
- Moved configuration options to generator expressions with the notable exclusion of OSX_ARCHITECTURES.
- Remove CMAKE_BUILD_TYPE from msvc CI target as Multi-Config generators ignore it
### godot-cpp-test Changes
- Removed majority of the cmake code, now that the godot-cpp project is setup, the majority of the flags will be propagated as transient dependencies
- Marked with EXCLUDE_FROM_ALL so that it isn't built as part of the 'all' target
- Updated ci to build the godot-cpp-test target from the root directory using cmake
- Tests passing for Windows, Linux, and Macos builds.
### Documentation
Updated with new information
Added Emscripten example
Added Android example
64 lines
1.9 KiB
CMake
64 lines
1.9 KiB
CMake
#[=======================================================================[.rst:
|
|
Windows
|
|
-------
|
|
|
|
This file contains functions for options and configuration for targeting the
|
|
Windows platform
|
|
|
|
]=======================================================================]
|
|
|
|
function( windows_options )
|
|
|
|
option( GODOT_USE_STATIC_CPP "Link MinGW/MSVC C++ runtime libraries statically" ON )
|
|
|
|
# The below scons variables are controlled via toolchain files instead
|
|
# "mingw_prefix" "MinGW prefix"
|
|
# "use_llvm" "Use the LLVM compiler (MVSC or MinGW depending on the use_mingw flag)"
|
|
# "use_mingw" "Use the MinGW compiler instead of MSVC - only effective on Windows"
|
|
endfunction()
|
|
|
|
function( windows_generate TARGET_NAME )
|
|
set( IS_MSVC "$<CXX_COMPILER_ID:MSVC>" )
|
|
set( IS_CLANG "$<OR:$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:Clang>>" )
|
|
set( NOT_MSVC "$<NOT:${IS_MSVC}>" )
|
|
set( STATIC_CPP "$<BOOL:${GODOT_USE_STATIC_CPP}>")
|
|
set( DISABLE_EXCEPTIONS "$<BOOL:${GODOT_DISABLE_EXCEPTIONS}>")
|
|
|
|
set_target_properties( ${TARGET_NAME}
|
|
PROPERTIES
|
|
PDB_OUTPUT_DIRECTORY "$<1:${CMAKE_SOURCE_DIR}/bin>"
|
|
)
|
|
|
|
target_compile_definitions( ${TARGET_NAME}
|
|
PUBLIC
|
|
WINDOWS_ENABLED
|
|
$<${IS_MSVC}:
|
|
TYPED_METHOD_BIND
|
|
NOMINMAX
|
|
>
|
|
)
|
|
|
|
target_compile_options( ${TARGET_NAME}
|
|
PUBLIC
|
|
$<${IS_MSVC}:
|
|
$<IF:${STATIC_CPP},/MT,/MD>$<${IS_DEV}:d> # Link microsoft runtime
|
|
>
|
|
)
|
|
target_link_options( ${TARGET_NAME}
|
|
PUBLIC
|
|
|
|
$<${NOT_MSVC}:
|
|
-Wl,--no-undefined
|
|
$<${STATIC_CPP}:
|
|
-static
|
|
-static-libgcc
|
|
-static-libstdc++
|
|
>
|
|
>
|
|
|
|
$<${IS_CLANG}:-lstdc++>
|
|
)
|
|
|
|
common_compiler_flags( ${TARGET_NAME} )
|
|
endfunction()
|