mirror of
https://github.com/godotengine/godot-cpp.git
synced 2025-12-31 01:48:45 +03:00
Merge pull request #1658 from enetheru/name_clash
CMake: Alleviate target name clashes, visibility, and grouping.
This commit is contained in:
@@ -1,68 +1,81 @@
|
||||
# Testing Extension
|
||||
# This is only linked to the template_release config.
|
||||
# so it requires the template_release version of godot to run.
|
||||
#[=======================================================================[.rst:
|
||||
Integration Testing
|
||||
-------------------
|
||||
|
||||
add_library( godot-cpp-test SHARED EXCLUDE_FROM_ALL )
|
||||
The Test target used to validate changes in the GitHub CI.
|
||||
|
||||
target_sources( godot-cpp-test
|
||||
PRIVATE
|
||||
src/example.cpp
|
||||
src/example.h
|
||||
src/register_types.cpp
|
||||
src/register_types.h
|
||||
src/tests.h
|
||||
)
|
||||
]=======================================================================]
|
||||
|
||||
set( TEST_TARGET "template_debug" CACHE STRING "Which godot-cpp::target to link against" )
|
||||
set_property( CACHE TEST_TARGET PROPERTY STRINGS "template_debug;template_release;editor" )
|
||||
message( STATUS "Testing Integration targets are enabled.")
|
||||
|
||||
target_link_libraries( godot-cpp-test
|
||||
PRIVATE
|
||||
godot-cpp::${TEST_TARGET} )
|
||||
foreach( TARGET_ALIAS template_debug template_release editor )
|
||||
set( TARGET_NAME "godot-cpp.test.${TARGET_ALIAS}" )
|
||||
set( LINK_TARGET "godot-cpp::${TARGET_ALIAS}" )
|
||||
|
||||
### Get useful properties of the library
|
||||
get_target_property( GODOT_PLATFORM godot-cpp::${TEST_TARGET} GODOT_PLATFORM )
|
||||
get_target_property( GODOT_TARGET godot-cpp::${TEST_TARGET} GODOT_TARGET )
|
||||
get_target_property( GODOT_ARCH godot-cpp::${TEST_TARGET} GODOT_ARCH )
|
||||
add_library( ${TARGET_NAME} SHARED EXCLUDE_FROM_ALL )
|
||||
|
||||
set( OUTPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/project/bin/" )
|
||||
set( DEV_TAG "$<$<BOOL:${GODOT_DEV_BUILD}>:.dev>" )
|
||||
target_sources( ${TARGET_NAME}
|
||||
PRIVATE
|
||||
src/example.cpp
|
||||
src/example.h
|
||||
src/register_types.cpp
|
||||
src/register_types.h
|
||||
src/tests.h
|
||||
)
|
||||
|
||||
set_target_properties( godot-cpp-test
|
||||
PROPERTIES
|
||||
CXX_STANDARD 17
|
||||
CXX_EXTENSIONS OFF
|
||||
CXX_VISIBILITY_PRESET ${GODOT_SYMBOL_VISIBILITY}
|
||||
target_link_libraries( ${TARGET_NAME} PRIVATE ${LINK_TARGET} )
|
||||
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
BUILD_RPATH_USE_ORIGIN ON
|
||||
LINK_SEARCH_START_STATIC ON
|
||||
LINK_SEARCH_END_STATIC ON
|
||||
### Get useful properties of the library
|
||||
get_target_property( GODOT_PLATFORM ${LINK_TARGET} GODOT_PLATFORM )
|
||||
get_target_property( GODOT_TARGET ${LINK_TARGET} GODOT_TARGET )
|
||||
get_target_property( GODOT_ARCH ${LINK_TARGET} GODOT_ARCH )
|
||||
|
||||
# NOTE: Wrapping the output variables inside a generator expression
|
||||
# prevents msvc generator from adding addition Config Directories
|
||||
LIBRARY_OUTPUT_DIRECTORY "$<1:${OUTPUT_DIR}>"
|
||||
RUNTIME_OUTPUT_DIRECTORY "$<1:${OUTPUT_DIR}>"
|
||||
PDB_OUTPUT_DIRECTORY "$<1:${OUTPUT_DIR}>" #MSVC Only, ignored on other platforms
|
||||
set( OUTPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/project/bin/" )
|
||||
set( DEV_TAG "$<$<BOOL:${GODOT_DEV_BUILD}>:.dev>" )
|
||||
|
||||
PREFIX "lib"
|
||||
OUTPUT_NAME "gdexample.${GODOT_PLATFORM}.${GODOT_TARGET}${DEV_TAG}.${GODOT_ARCH}"
|
||||
)
|
||||
|
||||
if( CMAKE_SYSTEM_NAME STREQUAL Darwin )
|
||||
get_target_property( OSX_ARCH godot-cpp::${TEST_TARGET} OSX_ARCHITECTURES )
|
||||
|
||||
set( OUTPUT_DIR "${OUTPUT_DIR}/libgdexample.macos.${TEST_TARGET}.framework")
|
||||
|
||||
set_target_properties( godot-cpp-test
|
||||
set_target_properties( ${TARGET_NAME}
|
||||
PROPERTIES
|
||||
CXX_STANDARD 17
|
||||
CXX_EXTENSIONS OFF
|
||||
CXX_VISIBILITY_PRESET ${GODOT_SYMBOL_VISIBILITY}
|
||||
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
BUILD_RPATH_USE_ORIGIN ON
|
||||
|
||||
# Try to ensure only static libraries are selected to be linked to.
|
||||
LINK_SEARCH_START_STATIC ON
|
||||
LINK_SEARCH_END_STATIC ON
|
||||
|
||||
# NOTE: Wrapping the output variables inside a generator expression
|
||||
# prevents msvc generator from adding addition Config Directories
|
||||
LIBRARY_OUTPUT_DIRECTORY "$<1:${OUTPUT_DIR}>"
|
||||
RUNTIME_OUTPUT_DIRECTORY "$<1:${OUTPUT_DIR}>"
|
||||
PDB_OUTPUT_DIRECTORY "$<1:${OUTPUT_DIR}>" #MSVC Only, ignored on other platforms
|
||||
|
||||
OUTPUT_NAME "gdexample.macos.${TEST_TARGET}${DEV_TAG}"
|
||||
SUFFIX ""
|
||||
PREFIX "lib"
|
||||
OUTPUT_NAME "gdexample.${GODOT_PLATFORM}.${GODOT_TARGET}${DEV_TAG}.${GODOT_ARCH}"
|
||||
|
||||
#macos options
|
||||
OSX_ARCHITECTURES "${OSX_ARCH}"
|
||||
# Some IDE's respect this property to logically group targets
|
||||
FOLDER "godot-cpp"
|
||||
)
|
||||
endif ()
|
||||
|
||||
# CMAKE_SYSTEM_NAME refers to the target system
|
||||
if( CMAKE_SYSTEM_NAME STREQUAL Darwin )
|
||||
get_target_property( OSX_ARCH ${LINK_TARGET} OSX_ARCHITECTURES )
|
||||
|
||||
set( OUTPUT_DIR "${OUTPUT_DIR}/libgdexample.macos.${TEST_TARGET}.framework")
|
||||
|
||||
set_target_properties( ${TARGET_NAME}
|
||||
PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY "$<1:${OUTPUT_DIR}>"
|
||||
RUNTIME_OUTPUT_DIRECTORY "$<1:${OUTPUT_DIR}>"
|
||||
|
||||
OUTPUT_NAME "gdexample.macos.${TARGET_ALIAS}${DEV_TAG}"
|
||||
SUFFIX ""
|
||||
|
||||
#macos options
|
||||
OSX_ARCHITECTURES "${OSX_ARCH}"
|
||||
)
|
||||
endif ()
|
||||
|
||||
endforeach()
|
||||
|
||||
Reference in New Issue
Block a user