Skip to content

Commit f9f9a1b

Browse files
authored
Merge pull request godotengine#947 from asmaloney/cmake-cleanup
{cmake} Updates for target-based approach
2 parents 32859ea + bb13b95 commit f9f9a1b

File tree

1 file changed

+21
-23
lines changed

1 file changed

+21
-23
lines changed

CMakeLists.txt

+21-23
Original file line numberDiff line numberDiff line change
@@ -36,31 +36,15 @@
3636
# Test build for Windows, Mac and mingw.
3737

3838
project(godot-cpp LANGUAGES CXX)
39-
cmake_minimum_required(VERSION 3.6)
39+
cmake_minimum_required(VERSION 3.12)
4040

4141
option(GENERATE_TEMPLATE_GET_NODE "Generate a template version of the Node class's get_node." ON)
4242

43-
set(BUILD_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin)
44-
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${BUILD_PATH}")
45-
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${BUILD_PATH}")
46-
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${BUILD_PATH}")
47-
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${BUILD_PATH}")
48-
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${BUILD_PATH}")
49-
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${BUILD_PATH}")
50-
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${BUILD_PATH}")
51-
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${BUILD_PATH}")
52-
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${BUILD_PATH}")
53-
5443
# Default build type is Debug in the SConstruct
5544
if("${CMAKE_BUILD_TYPE}" STREQUAL "")
5645
set(CMAKE_BUILD_TYPE Debug)
5746
endif()
5847

59-
# Set the c++ standard to c++17
60-
set(CMAKE_CXX_STANDARD 17)
61-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
62-
set(CMAKE_CXX_EXTENSIONS OFF)
63-
6448
set(FLOAT_TYPE_FLAG "float" CACHE STRING "")
6549
if(FLOAT_TYPE EQUAL 64)
6650
set(FLOAT_TYPE_FLAG "double" CACHE STRING "")
@@ -156,8 +140,8 @@ add_custom_command(OUTPUT ${GENERATED_FILES_LIST}
156140
)
157141

158142
# Get Sources
159-
file(GLOB_RECURSE SOURCES src/*.c**)
160-
file(GLOB_RECURSE HEADERS include/*.h**)
143+
file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS src/*.c**)
144+
file(GLOB_RECURSE HEADERS CONFIGURE_DEPENDS include/*.h**)
161145

162146
# Define our godot-cpp library
163147
add_library(${PROJECT_NAME}
@@ -166,6 +150,12 @@ add_library(${PROJECT_NAME}
166150
${GENERATED_FILES_LIST}
167151
)
168152
add_library(godot::cpp ALIAS ${PROJECT_NAME})
153+
154+
target_compile_features(${PROJECT_NAME}
155+
PRIVATE
156+
cxx_std_17
157+
)
158+
169159
target_compile_definitions(${PROJECT_NAME} PUBLIC
170160
$<$<CONFIG:Debug>:DEBUG_ENABLED>
171161
$<$<CONFIG:Debug>:DEBUG_METHODS_ENABLED>
@@ -190,17 +180,25 @@ target_include_directories(${PROJECT_NAME}
190180
set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY COMPILE_FLAGS ${GODOT_COMPILE_FLAGS})
191181
set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS ${GODOT_LINKER_FLAGS})
192182

193-
194183
# Create the correct name (godot.os.build_type.system_bits)
195-
196184
string(TOLOWER "${CMAKE_SYSTEM_NAME}" SYSTEM_NAME)
197185
string(TOLOWER "${CMAKE_BUILD_TYPE}" BUILD_TYPE)
198186

199187
if(ANDROID)
200188
# Added the android abi after system name
201189
set(SYSTEM_NAME ${SYSTEM_NAME}.${ANDROID_ABI})
190+
202191
# Android does not have the bits at the end if you look at the main godot repo build
203-
set_property(TARGET ${PROJECT_NAME} PROPERTY OUTPUT_NAME "godot-cpp.${SYSTEM_NAME}.${BUILD_TYPE}")
192+
set(OUTPUT_NAME "godot-cpp.${SYSTEM_NAME}.${BUILD_TYPE}")
204193
else()
205-
set_property(TARGET ${PROJECT_NAME} PROPERTY OUTPUT_NAME "godot-cpp.${SYSTEM_NAME}.${BUILD_TYPE}.${BITS}")
194+
set(OUTPUT_NAME "godot-cpp.${SYSTEM_NAME}.${BUILD_TYPE}.${BITS}")
206195
endif()
196+
197+
set_target_properties(${PROJECT_NAME}
198+
PROPERTIES
199+
CXX_EXTENSIONS OFF
200+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
201+
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
202+
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
203+
OUTPUT_NAME "${OUTPUT_NAME}"
204+
)

0 commit comments

Comments
 (0)