更新功能
This commit is contained in:
+29
-6
@@ -1,6 +1,22 @@
|
||||
if(PACKAGE_ZIP_RUN)
|
||||
file(STRINGS "${PACKAGE_INCLUDE_FILE}" package_includes)
|
||||
file(STRINGS "${PACKAGE_EXCLUDE_FILE}" package_excludes)
|
||||
file(GLOB_RECURSE package_files LIST_DIRECTORIES false RELATIVE "${PACKAGE_ROOT}" "${PACKAGE_ROOT}/*")
|
||||
set(package_files)
|
||||
foreach(include_pattern IN LISTS package_includes)
|
||||
string(REPLACE "\\" "/" include_pattern "${include_pattern}")
|
||||
string(REGEX REPLACE "^/+" "" include_pattern "${include_pattern}")
|
||||
if(include_pattern STREQUAL "")
|
||||
continue()
|
||||
endif()
|
||||
if(include_pattern MATCHES "/$")
|
||||
string(REGEX REPLACE "/+$" "" include_pattern "${include_pattern}")
|
||||
file(GLOB_RECURSE matched_files LIST_DIRECTORIES false RELATIVE "${PACKAGE_ROOT}" "${PACKAGE_ROOT}/${include_pattern}/*")
|
||||
else()
|
||||
file(GLOB_RECURSE matched_files LIST_DIRECTORIES false RELATIVE "${PACKAGE_ROOT}" "${PACKAGE_ROOT}/${include_pattern}")
|
||||
endif()
|
||||
list(APPEND package_files ${matched_files})
|
||||
endforeach()
|
||||
list(REMOVE_DUPLICATES package_files)
|
||||
set(excluded_files)
|
||||
foreach(exclude_pattern IN LISTS package_excludes)
|
||||
string(REPLACE "\\" "/" exclude_pattern "${exclude_pattern}")
|
||||
@@ -20,7 +36,7 @@ if(PACKAGE_ZIP_RUN)
|
||||
list(REMOVE_DUPLICATES excluded_files)
|
||||
list(REMOVE_ITEM package_files ${excluded_files})
|
||||
endif()
|
||||
foreach(internal_file IN ITEMS "${PACKAGE_OUTPUT_FILE}" "${PACKAGE_FILE_LIST}" "${PACKAGE_EXCLUDE_FILE}")
|
||||
foreach(internal_file IN ITEMS "${PACKAGE_OUTPUT_FILE}" "${PACKAGE_FILE_LIST}" "${PACKAGE_INCLUDE_FILE}" "${PACKAGE_EXCLUDE_FILE}")
|
||||
file(RELATIVE_PATH internal_relative "${PACKAGE_ROOT}" "${internal_file}")
|
||||
string(REPLACE "\\" "/" internal_relative "${internal_relative}")
|
||||
if(NOT internal_relative MATCHES "^\\.\\./")
|
||||
@@ -39,19 +55,26 @@ if(PACKAGE_ZIP_RUN)
|
||||
endif()
|
||||
return()
|
||||
endif()
|
||||
function(add_project_zip_target target_name output_file exclude_list_name)
|
||||
get_filename_component(package_root "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/.." ABSOLUTE)
|
||||
function(add_project_zip_target target_name output_file root_directory include_list_name exclude_list_name)
|
||||
if(IS_ABSOLUTE "${root_directory}")
|
||||
get_filename_component(package_root "${root_directory}" ABSOLUTE)
|
||||
else()
|
||||
get_filename_component(package_root "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${root_directory}" ABSOLUTE)
|
||||
endif()
|
||||
if(IS_ABSOLUTE "${output_file}")
|
||||
set(package_output_file "${output_file}")
|
||||
get_filename_component(package_output_file "${output_file}" ABSOLUTE)
|
||||
else()
|
||||
get_filename_component(package_output_file "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${output_file}" ABSOLUTE)
|
||||
endif()
|
||||
set(package_file_list "${CMAKE_CURRENT_BINARY_DIR}/${target_name}.files")
|
||||
set(package_include_file "${CMAKE_CURRENT_BINARY_DIR}/${target_name}.includes")
|
||||
set(package_exclude_file "${CMAKE_CURRENT_BINARY_DIR}/${target_name}.excludes")
|
||||
string(REPLACE ";" "\n" package_include_content "${${include_list_name}}")
|
||||
string(REPLACE ";" "\n" package_exclude_content "${${exclude_list_name}}")
|
||||
file(WRITE "${package_include_file}" "${package_include_content}\n")
|
||||
file(WRITE "${package_exclude_file}" "${package_exclude_content}\n")
|
||||
add_custom_target(${target_name}
|
||||
COMMAND "${CMAKE_COMMAND}" -DPACKAGE_ZIP_RUN=ON "-DPACKAGE_ROOT=${package_root}" "-DPACKAGE_OUTPUT_FILE=${package_output_file}" "-DPACKAGE_FILE_LIST=${package_file_list}" "-DPACKAGE_EXCLUDE_FILE=${package_exclude_file}" -P "${CMAKE_CURRENT_FUNCTION_LIST_FILE}"
|
||||
COMMAND "${CMAKE_COMMAND}" -DPACKAGE_ZIP_RUN=ON "-DPACKAGE_ROOT=${package_root}" "-DPACKAGE_OUTPUT_FILE=${package_output_file}" "-DPACKAGE_FILE_LIST=${package_file_list}" "-DPACKAGE_INCLUDE_FILE=${package_include_file}" "-DPACKAGE_EXCLUDE_FILE=${package_exclude_file}" -P "${CMAKE_CURRENT_FUNCTION_LIST_FILE}"
|
||||
BYPRODUCTS "${package_output_file}"
|
||||
COMMENT "Creating ${package_output_file}"
|
||||
VERBATIM
|
||||
|
||||
Reference in New Issue
Block a user