Browse Source

CMake: default target when godot-cpp is top level

People seem to want to build godot-cpp without any arguments, not even specifying a target.

We have to detect if we are top level though because it conflicts with being consumed.
Samuel Nicholas 5 months ago
parent
commit
8b33e73353
2 changed files with 17 additions and 2 deletions
  1. 7 1
      CMakeLists.txt
  2. 10 1
      cmake/godotcpp.cmake

+ 7 - 1
CMakeLists.txt

@@ -36,11 +36,17 @@ function is run.
 
 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, <PROJECT-NAME>_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

+ 10 - 1
cmake/godotcpp.cmake

@@ -330,8 +330,17 @@ function(godotcpp_generate)
             "$<$<NOT:${THREADS_ENABLED}>:.nothreads>"
         )
 
+        # People are compiling godot by itself.
+        set(EXCLUDE EXCLUDE_FROM_ALL)
+        if(GODOTCPP_IS_TOP_LEVEL)
+            if(TARGET_ALIAS STREQUAL template_debug)
+                set(EXCLUDE "")
+            endif()
+        endif()
+
         # the godot-cpp.* library targets
-        add_library(${TARGET_NAME} STATIC EXCLUDE_FROM_ALL)
+        add_library(${TARGET_NAME} STATIC ${EXCLUDE})
+
         add_library(godot-cpp::${TARGET_ALIAS} ALIAS ${TARGET_NAME})
 
         file(GLOB_RECURSE GODOTCPP_SOURCES LIST_DIRECTORIES NO CONFIGURE_DEPENDS src/*.cpp)