Skip to content

Commit d69ae4a

Browse files
committed
[PROJECT/UTILITY] handle module folder via file depends
1 parent 00c5db3 commit d69ae4a

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

CMakeLists.txt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
cmake_minimum_required (VERSION 3.21)
44

55
function(file_add_depends FILE)
6-
message(STATUS "Add file dependency: ${FILE}")
6+
message(STATUS "Add file system dependency: ${FILE}")
77
if(EXISTS "${FILE}")
88
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${FILE}) # generally watches for changes
99
else()
@@ -154,13 +154,16 @@ target_precompile_headers(OpenSHC.dll PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${PCH_FI
154154
# Using module folder as runtime output to properly place the dll and other libs
155155
set_target_properties(OpenSHC.dll PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${OPEN_SHC_DLL_DEST})
156156

157+
# Ensure the module folder exists
158+
file(MAKE_DIRECTORY ${OPEN_SHC_DLL_DEST})
159+
file_add_depends("${OPEN_SHC_DLL_DEST}")
160+
157161
# This strange workaround does ensure that the module folder is generated and that a config change regenerates the dll.
158162
# It "only" costs a file creation and a compare minimum while not changing the actual source. Found no other way.
159163
set(BUILD_TRIGGER_FILE "${OPEN_SHC_DLL_DEST}/buildtrigger.c")
160164
add_custom_target(
161165
OpenSHC.dll.trigger
162166
BYPRODUCTS ${BUILD_TRIGGER_FILE}
163-
COMMAND ${CMAKE_COMMAND} -E make_directory "${OPEN_SHC_DLL_DEST}"
164167
COMMAND ${CMAKE_COMMAND} -E echo "// $<CONFIG>" > ${BUILD_TRIGGER_FILE}.tmp
165168
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${BUILD_TRIGGER_FILE}.tmp ${BUILD_TRIGGER_FILE}
166169
COMMAND ${CMAKE_COMMAND} -E remove ${BUILD_TRIGGER_FILE}.tmp

0 commit comments

Comments
 (0)