cmake - 如何将文件列表传递给 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?
解决方案
推荐阅读
- python - 如何从 CSV 文件创建具有一个键和多个值的字典?
- grep - Grep 匹配模式但排除特定字符串
- ios - 是否可以从标签栏控制器导航到另一个标签栏控制器?
- javascript - 在 JavaScript 中将动态字符串转换为逻辑表达式
- android - 在 Android 中使用 Retrofit+OkHttp 从 TheMovieDataBase 检索数据时出现 SSLHandshakeException
- jquery - JQuery 从表单序列化中排除某些 div 输入
- c++ - 关于在具有结构成员的类中使用模板的问题
- sql-server - 丢弃匹配行并保留不匹配行 T-SQL
- javascript - 清单:没有添加到主屏幕
- visual-studio - Visual Studio 2019(本身):调用的目标已引发异常