Add add_data_file() to CMakeLists.txt

This automatically cleans up artifacts specified as BYPRODUCTS after
running the commands.
This commit is contained in:
Diomendius
2024-07-05 22:50:04 +12:00
parent 7d97d4ac14
commit b8f8180638

View File

@@ -473,13 +473,36 @@ file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Packaged/Houses")
set(DATA_FILES)
list(APPEND DATA_FILES Packaged/ApplicationResources.gpf)
add_custom_command(
OUTPUT
Packaged/ApplicationResources.gpf
function(add_data_file NAME)
list(APPEND DATA_FILES "Packaged/${NAME}")
set(DATA_FILES "${DATA_FILES}" PARENT_SCOPE)
cmake_parse_arguments(PARSE_ARGV 1 ARG
""
""
"BYPRODUCTS;COMMANDS"
)
if(ARG_BYPRODUCTS)
set(RM_BYPRODUCTS_COMMAND COMMAND "${CMAKE_COMMAND}" -E rm)
set(RM_BYPRODUCTS_PATHS "${ARG_BYPRODUCTS}")
list(TRANSFORM RM_BYPRODUCTS_PATHS PREPEND "${CMAKE_CURRENT_BINARY_DIR}/")
endif()
add_custom_command(
OUTPUT "Packaged/${NAME}"
BYPRODUCTS ${ARG_BYPRODUCTS}
${ARG_COMMANDS}
${RM_BYPRODUCTS_COMMAND} ${RM_BYPRODUCTS_PATHS}
VERBATIM
)
endfunction()
add_data_file(ApplicationResources.gpf
BYPRODUCTS
Packaged/ApplicationResources.gpr
Packaged/ApplicationResources.gpa
COMMANDS
DEPENDS MiniRez gpr2gpa FTagData MergeGPF
COMMAND MiniRez
"GliderProData/Glider PRO.r"
@@ -496,13 +519,9 @@ add_custom_command(
COMMAND MergeGPF
"${CMAKE_CURRENT_BINARY_DIR}/Packaged/ApplicationResources.gpf"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
VERBATIM
)
list(APPEND DATA_FILES Packaged/Fonts.gpf)
add_custom_command(
OUTPUT
Packaged/Fonts.gpf
add_data_file(Fonts.gpf
BYPRODUCTS
Packaged/Fonts.gpr
Packaged/Fonts.gpa
@@ -523,6 +542,7 @@ add_custom_command(
Packaged/CachedFont12.bin
Packaged/CachedFont13.bin
Packaged/CachedFont14.bin
COMMANDS
DEPENDS GenerateFonts MiniRez gpr2gpa FTagData MergeGPF
COMMAND GenerateFonts
"${CMAKE_SOURCE_DIR}/Resources"
@@ -538,7 +558,6 @@ add_custom_command(
Packaged/Fonts.gpf
data ozm5 0 0 locked
COMMAND MergeGPF Packaged/Fonts.gpf
VERBATIM
)
# These files are committed to the repo and aren't currently useful on non-Windows systems anyway.