首页 > 解决方案 > 如何将文件列表传递给 CMake 中的 add_custom_command?

问题描述

我在 CMake 中为我运行的每个构建创建一个 zip 文件。我有一个需要复制到构建目录并添加到 zip 文件的每个文件的列表。我还没有弄清楚如何在不手动重新列出 add_custom_command 中的所有文件的情况下将列表传递给 add_custom_command。

# Copy needed files to build directory
set (ADDITIONAL_FILES
    "${SOME_LIBRARY_DIR}/some_library.dll"
    "${PROJECT_SOURCE_DIR}/readme.txt"
)
foreach (file ${ADDITIONAL_FILES})
    get_filename_component(file_name ${file} NAME)
    configure_file(
        ${file}
        "${PROJECT_BINARY_DIR}/${file_name}" COPYONLY)
endforeach()

# Create release zip file
add_custom_command(OUTPUT
   "${PROJECT_NAME}_v${${PROJECT_NAME}_VERSION}.zip"
   DEPENDS ${PROJECT_NAME}
   COMMAND ${CMAKE_COMMAND} -E tar "cfv"
   "${PROJECT_BINARY_DIR}/${PROJECT_NAME}_v${${PROJECT_NAME}_VERSION}.zip"
   --format=zip
   "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.exe"
   "${PROJECT_BINARY_DIR}/some_library.dll"
   "${PROJECT_BINARY_DIR}/readme.txt"
   COMMAND ${CMAKE_COMMAND} -E echo "creating zip")
add_custom_target(run ALL
  DEPENDS "${PROJECT_NAME}_v${${PROJECT_NAME}_VERSION}.zip"
)

如何将文件列表传递给 add_custom_command?

标签: cmake

解决方案


推荐阅读