cmake_minimum_required(VERSION 3.10...3.17) #[=======================================================================[.rst: CMake Version requirements -------------------------- To enable use of the emscripten emsdk hack for pseudo shared library support without polluting options for consumers we need to use the CMAKE_PROJECT__INCLUDE which was introduced in version 3.17 For more information check cmake/emsdkHack.cmake 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 wherever possible. Where they are not, we will attempt to document common difference in the docs (https://docs.godotengine.org/en/latest/tutorials/scripting/cpp/build_system/cmake.html) and platform specific differences in their respective cmake/.cmake file. 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 maintain. Where the SCons additional scripts in the tools directory, The CMake scripts are in the cmake directory. For example; the tools/godotcpp.py is matched by the cmake/godotcpp.cmake file .. highlight:: python cpp_tool = Tool("godotcpp", toolpath=["tools"]) cpp_tool.options(opts, env) The CMake equivalent is below. ]=======================================================================] include(cmake/godotcpp.cmake) godotcpp_options() #[[ People are compiling godot by itself and expecting template_debug Replace this with PROJECT_IS_TOP_LEVEL, _IS_TOP_LEVEL when minimum reaches 3.21 ]] if(NOT PROJECT_NAME) set(GODOTCPP_IS_TOP_LEVEL ON) endif() # Define our project. project( godot-cpp VERSION 4.4 DESCRIPTION "C++ bindings for the Godot Engine's GDExtensions API." HOMEPAGE_URL "https://github.com/godotengine/godot-cpp" LANGUAGES CXX ) compiler_detection() godotcpp_generate() # Conditionally enable the godot-cpp.test. integration testing targets if(GODOTCPP_ENABLE_TESTING) add_subdirectory(test) endif() #[[ If this is the top level CMakeLists.txt, Generators which honor the USE_FOLDERS flag will organize godot-cpp targets under a subfolder named 'godot-cpp'. This is enable by default from CMake version 3.26 ]] set_property(GLOBAL PROPERTY USE_FOLDERS ON)