mirror of
https://github.com/godotengine/godot-cpp.git
synced 2025-12-31 01:48:45 +03:00
CMake: Handle GODOT_DEV_BUILD flag correctly
.dev is added to output artifacts Warn users for specifying dev_build and Release build config Update documentation with deviations to SCons Update debug_symbols handling, its rolled into build config Cleanup helper variables and comments
This commit is contained in:
@@ -12,8 +12,12 @@ CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE which was introduced in version 3.17
|
||||
Scons Compatibility
|
||||
-------------------
|
||||
|
||||
There is an understandable conflict between build systems as they define
|
||||
similar concepts in different ways. When there isn't a 1:1 relationship,
|
||||
compromises need to be made to resolve those differences.
|
||||
|
||||
As we are attempting to maintain feature parity, and ease of maintenance, these
|
||||
CMake scripts are built to resemble the SCons build system.
|
||||
CMake scripts are built to resemble the SCons build system wherever possible.
|
||||
|
||||
The file structure and file content are made to match, if not in content then
|
||||
in spirit. The closer the two build systems look the easier they will be to
|
||||
@@ -30,58 +34,12 @@ function is run.
|
||||
cpp_tool = Tool("godotcpp", toolpath=["tools"])
|
||||
cpp_tool.options(opts, env)
|
||||
|
||||
|
||||
The CMake equivalent is below.
|
||||
]=======================================================================]
|
||||
|
||||
include( cmake/godotcpp.cmake )
|
||||
godotcpp_options()
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
|
||||
Configurations
|
||||
--------------
|
||||
|
||||
There are two build main configurations, 'Debug' and 'Release', these are not
|
||||
related to godot's DEBUG_FEATURES flag. Build configurations change the default
|
||||
compiler and linker flags present when building the library, things like debug
|
||||
symbols, optimization.
|
||||
|
||||
The Scons build scripts don't have this concept, you can think of it like the
|
||||
SCons solution has a single default configuration. In both cases overriding the
|
||||
defaults is controlled by options on the command line, or in preset files.
|
||||
|
||||
Because of this added configuration and that it can be undefined, it becomes
|
||||
important to set a default, considering the SCons solution that does not enable
|
||||
debug symbols by default, it seemed appropriate to set the default to 'Release'
|
||||
if unspecified. This can always be overridden like below.
|
||||
|
||||
.. highlight:: shell
|
||||
|
||||
cmake <source> -DCMAKE_BUILD_TYPE:STRING=Debug
|
||||
|
||||
.. caution::
|
||||
|
||||
A complication arises from `Multi-Config Generators`_ that cannot have
|
||||
their configuration set at configure time. This means that the configuration
|
||||
must be set on the build command. This is especially important for Visual
|
||||
Studio Generators which default to 'Debug'
|
||||
|
||||
.. highlight:: shell
|
||||
|
||||
cmake --build . --config Release
|
||||
|
||||
.. _Multi-Config Generators:https://cmake.org/cmake/help/latest/prop_gbl/GENERATOR_IS_MULTI_CONFIG.html
|
||||
]=======================================================================]
|
||||
get_property( IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG )
|
||||
if( NOT IS_MULTI_CONFIG AND NOT CMAKE_BUILD_TYPE )
|
||||
if( GODOT_DEV_BUILD )
|
||||
set( CMAKE_BUILD_TYPE Debug )
|
||||
else ()
|
||||
set( CMAKE_BUILD_TYPE Release )
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
#[[ Python is required for code generation ]]
|
||||
find_package(Python3 3.4 REQUIRED) # pathlib should be present
|
||||
|
||||
|
||||
Reference in New Issue
Block a user