Skip to content

Commit cd2d3ed

Browse files
committed
Set target's output directories only if corresponding CMake output directory variables are defined
1 parent 046fbcf commit cd2d3ed

4 files changed

Lines changed: 54 additions & 14 deletions

File tree

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ include("${RED4EXT_CMAKE_DIR}/ConfigureDefaultOutputDirectories.cmake")
1414
include("${RED4EXT_CMAKE_DIR}/ConfigureResourceRc.cmake")
1515
include("${RED4EXT_CMAKE_DIR}/ConfigureVersionFile.cmake")
1616
include("${RED4EXT_CMAKE_DIR}/ConfigureVersionFromGit.cmake")
17-
include("${RED4EXT_CMAKE_DIR}/TargetOutputDirectory.cmake")
17+
include("${RED4EXT_CMAKE_DIR}/TargetAppendOutputDirectory.cmake")
1818

1919
# ------------------------------------------------------------------------------
2020
# Versioning
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
function(red4ext_target_append_output_directory TARGET DIRECTORY)
2+
__red4ext_target_append_directory_if_property_set(
3+
${TARGET}
4+
ARCHIVE_OUTPUT_DIRECTORY
5+
"${DIRECTORY}"
6+
)
7+
8+
__red4ext_target_append_directory_if_property_set(
9+
${TARGET}
10+
LIBRARY_OUTPUT_DIRECTORY
11+
"${DIRECTORY}"
12+
)
13+
14+
__red4ext_target_append_directory_if_property_set(
15+
${TARGET}
16+
RUNTIME_OUTPUT_DIRECTORY
17+
"${DIRECTORY}"
18+
)
19+
20+
foreach(CONFIGURATION ${CMAKE_CONFIGURATION_TYPES})
21+
string(TOUPPER ${CONFIGURATION} CONFIGURATION_UPPER)
22+
23+
__red4ext_target_append_directory_if_property_set(
24+
${TARGET}
25+
"ARCHIVE_OUTPUT_DIRECTORY_${CONFIGURATION_UPPER}"
26+
"${DIRECTORY}"
27+
)
28+
29+
__red4ext_target_append_directory_if_property_set(
30+
${TARGET}
31+
"LIBRARY_OUTPUT_DIRECTORY_${CONFIGURATION_UPPER}"
32+
"${DIRECTORY}"
33+
)
34+
35+
__red4ext_target_append_directory_if_property_set(
36+
${TARGET}
37+
"RUNTIME_OUTPUT_DIRECTORY_${CONFIGURATION_UPPER}"
38+
"${DIRECTORY}"
39+
)
40+
endforeach()
41+
endfunction()
42+
43+
function(__red4ext_target_append_directory_if_property_set TARGET PROPERTY DIRECTORY)
44+
get_target_property(CURRENT_PROPERTY_VALUE ${TARGET} ${PROPERTY})
45+
if(CURRENT_PROPERTY_VALUE)
46+
set_target_properties(
47+
${TARGET}
48+
PROPERTIES
49+
${PROPERTY} "${CURRENT_PROPERTY_VALUE}/${DIRECTORY}"
50+
)
51+
endif()
52+
endfunction()

cmake/TargetOutputDirectory.cmake

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/playground/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
add_library(RED4ext.Playground SHARED)
22

3-
red4ext_target_output_directory(
3+
red4ext_target_append_output_directory(
44
RED4ext.Playground
55
plugins
66
)

0 commit comments

Comments
 (0)