Add a CMake function for adding extra files to packaging

This commit is contained in:
Nikita Lisitsa 2023-01-04 18:01:06 +03:00
parent 594dcc9230
commit 9e5b6997f6

View file

@ -23,6 +23,14 @@ if(PSEMEK_PACKAGE_MODE)
set(PSEMEK_COPY_FILES_RAW)
endif()
function(psemek_package_output_path target outvar)
if(NOT PSEMEK_PACKAGE_MODE)
message(FATAL "psemek_package_output_path must only be called during packaging")
endif()
set(${outvar} "${CMAKE_CURRENT_LIST_DIR}/${PSEMEK_PACKAGE_OUTPUT_PATH}/${target}${PSEMEK_PACKAGE_VERSION_SUFFIX}-${PSEMEK_PACKAGE_SUFFIX}.zip" PARENT_SCOPE)
endfunction()
function(psemek_add_executable target)
if((NOT PSEMEK_PACKAGE_MODE) OR PSEMEK_PACKAGE_TARGET)
add_executable(${target} ${ARGN})
@ -50,8 +58,11 @@ function(psemek_add_executable target)
)
endif()
psemek_package_output_path(${target} _OUTPUT_PATH)
add_custom_command(TARGET ${target} POST_BUILD
COMMAND zip -v ${CMAKE_CURRENT_LIST_DIR}/${PSEMEK_PACKAGE_OUTPUT_PATH}/${target}${PSEMEK_PACKAGE_VERSION_SUFFIX}-${PSEMEK_PACKAGE_SUFFIX}.zip -j $<TARGET_FILE:${target}> ${PSEMEK_PACKAGE_COPY_FILES}
COMMAND echo Packaging target ${target} into ${_OUTPUT_PATH}
COMMAND zip -v "${_OUTPUT_PATH}" -j $<TARGET_FILE:${target}> ${PSEMEK_PACKAGE_COPY_FILES}
)
endif()
endif()
@ -104,8 +115,6 @@ function(psemek_add_winrc target path)
file(MAKE_DIRECTORY "${OUT_DIR}/winrc")
set(_OUT_FILE "${OUT_DIR}/winrc/res.o")
message("CMAKE_RC_COMPILER: ${CMAKE_RC_COMPILER}")
add_custom_command(OUTPUT "${_OUT_FILE}"
COMMAND ${CMAKE_RC_COMPILER} "${_IN_FILE}" "${_OUT_FILE}"
DEPENDS psemek-resource-compiler "${_IN_FILE}"
@ -114,3 +123,18 @@ function(psemek_add_winrc target path)
target_sources(${target} PRIVATE "${_OUT_FILE}")
endif()
endfunction()
function(psemek_package_files target)
if(PSEMEK_PACKAGE_MODE)
if(PSEMEK_PACKAGE_TARGET)
psemek_package_output_path(${target} _OUTPUT_PATH)
add_custom_command(TARGET ${target} POST_BUILD
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
COMMAND zip -v "${_OUTPUT_PATH}" -r ${ARGN}
)
endif()
else()
file(COPY ${ARGN} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
endif()
endfunction()