From ee60ef57a103ccbc958e4a4e4b33e970afd03921 Mon Sep 17 00:00:00 2001 From: Diomendius <42310725+Diomendius@users.noreply.github.com> Date: Tue, 6 Aug 2024 03:42:11 +1200 Subject: [PATCH] Generate Packaged/Houses dirs as dependencies Uses add_custom_command() to add rules for generating these directories, rather than creating them only when CMakeLists.txt runs. With this change, you can manually delete Packaged from the build directory without causing subsequent builds to fail. --- CMakeLists.txt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2335648..927f32b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -511,7 +511,11 @@ target_include_directories(ConvertColorCursors PRIVATE target_link_libraries(ConvertColorCursors PortabilityLayer) -file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Packaged/Houses") +add_custom_target(BuildDirs + BYPRODUCTS Packaged + COMMAND "${CMAKE_COMMAND}" -E make_directory Packaged/Houses + VERBATIM + ) set(DATA_FILES) @@ -534,6 +538,7 @@ function(add_data_file NAME) add_custom_command( OUTPUT "Packaged/${NAME}" BYPRODUCTS ${ARG_BYPRODUCTS} + DEPENDS BuildDirs ${ARG_COMMANDS} ${RM_BYPRODUCTS_COMMAND} ${RM_BYPRODUCTS_PATHS} VERBATIM @@ -646,7 +651,7 @@ function(add_house NAME) "${BASE_PATH}.gpf" BYPRODUCTS ${BYPRODUCTS} - DEPENDS hqx2gp gpr2gpa MergeGPF + DEPENDS hqx2gp gpr2gpa MergeGPF BuildDirs COMMAND hqx2gp "${CMAKE_SOURCE_DIR}/GliderProData/Houses/${NAME}.binhex" "${CMAKE_SOURCE_DIR}/DefaultTimestamp.timestamp" @@ -673,7 +678,7 @@ function(add_house NAME) "${BASE_PATH}.mov.gpf" BYPRODUCTS "${BASE_PATH}.mov.gpa" - DEPENDS FTagData MergeGPF "${MOV_GPA_SRC}" + DEPENDS FTagData MergeGPF BuildDirs "${MOV_GPA_SRC}" COMMAND FTagData "${CMAKE_SOURCE_DIR}/DefaultTimestamp.timestamp" "${BASE_PATH}.mov.gpf"