Skip to content

Commit aa83dc8

Browse files
Refactor sync_directory function and update post-build asset synchronization by removing dependency on any previous tasks (executable build task or shaders targets). The post-build task will garntee only the copy-if-different of shader/texture/modele files to proper location in case of Visual Studio or Ninja Multi-Config.
1 parent 19a620b commit aa83dc8

1 file changed

Lines changed: 18 additions & 25 deletions

File tree

attachments/CMakeLists.txt

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -125,24 +125,6 @@ function (add_slang_shader_target TARGET)
125125
add_custom_target (${TARGET} DEPENDS ${SHADERS_DIR}/slang.spv)
126126
endfunction()
127127

128-
function(sync_directory SRC_DIR DST_DIR TARGET_NAME LABEL)
129-
file(GLOB_RECURSE FILES "${SRC_DIR}/*")
130-
131-
foreach(FILE IN LISTS FILES)
132-
file(RELATIVE_PATH REL_PATH "${SRC_DIR}" "${FILE}")
133-
set(DST_FILE "${DST_DIR}/${REL_PATH}")
134-
get_filename_component(DST_DIR_PATH "${DST_FILE}" DIRECTORY)
135-
136-
add_custom_command(
137-
TARGET ${TARGET_NAME}
138-
POST_BUILD
139-
COMMAND ${CMAKE_COMMAND} -E make_directory "${DST_DIR_PATH}"
140-
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FILE}" "${DST_FILE}"
141-
COMMENT "${LABEL}: Syncing ${REL_PATH}"
142-
)
143-
endforeach()
144-
endfunction()
145-
146128
function (add_chapter CHAPTER_NAME)
147129
cmake_parse_arguments (CHAPTER "" "SHADER" "LIBS;TEXTURES;MODELS" ${ARGN})
148130
add_executable (${CHAPTER_NAME} ${CHAPTER_NAME}.cpp)
@@ -196,13 +178,6 @@ function (add_chapter CHAPTER_NAME)
196178
${CMAKE_GENERATOR} MATCHES "Ninja Multi-Config")
197179

198180
set(EXECUTABLE_DIR $<TARGET_FILE_DIR:${CHAPTER_NAME}>)
199-
200-
add_custom_target(${CHAPTER_NAME}_postbuild ALL
201-
COMMENT "${CHAPTER_NAME}: Post-build asset sync"
202-
)
203-
204-
add_dependencies(${CHAPTER_NAME}_postbuild ${CHAPTER_NAME})
205-
206181
if(DEFINED CHAPTER_SHADER)
207182
sync_directory(
208183
"${CMAKE_BINARY_DIR}/${CHAPTER_NAME}/shaders"
@@ -232,6 +207,24 @@ function (add_chapter CHAPTER_NAME)
232207
endif()
233208
endfunction ()
234209

210+
function(sync_directory SRC_DIR DST_DIR TARGET_NAME LABEL)
211+
file(GLOB_RECURSE FILES "${SRC_DIR}/*")
212+
213+
foreach(FILE IN LISTS FILES)
214+
file(RELATIVE_PATH REL_PATH "${SRC_DIR}" "${FILE}")
215+
set(DST_FILE "${DST_DIR}/${REL_PATH}")
216+
get_filename_component(DST_DIR_PATH "${DST_FILE}" DIRECTORY)
217+
218+
add_custom_command(
219+
TARGET ${TARGET_NAME}
220+
POST_BUILD
221+
COMMAND ${CMAKE_COMMAND} -E make_directory "${DST_DIR_PATH}"
222+
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FILE}" "${DST_FILE}"
223+
COMMENT "${LABEL}: Syncing ${REL_PATH}"
224+
)
225+
endforeach()
226+
endfunction()
227+
235228
add_chapter (00_base_code)
236229

237230
add_chapter (01_instance_creation)

0 commit comments

Comments
 (0)