我可以使用类似的东西通过 cmake 复制文件
file(GLOB IMAGES ${PROJECT_SOURCE_DIR}/Image/*)
file(COPY ${IMAGES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/Image
FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_WRITE GROUP_READ WORLD_READ)
但缺点是此命令只会在重新配置 cmake 时调用。我想出了一种方法来在触发构建时复制它们,如下所示
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${PROJECT_SOURCE_DIR}/Image"
"${CMAKE_CURRENT_BINARY_DIR}/Image")
这符合我的需要,因为我无法像第一种方法那样想出一种改变文件权限的方法。我需要更改文件权限以确保它是正确的,否则在运行以下命令时某些图像可能会被错误地归类为可执行文件
find . -executable -type f
从 add_custom_command 复制时是否可以更改文件权限?
最佳答案
CMake 开发人员实际上以有效的答案作为回应。关键是创建一个临时的 cmake 脚本,其中包含文件 (COPY) 并调用它。
file(GLOB IMAGES "${PROJECT_SOURCE_DIR}/Image/*")
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/foo.cmake" "file(COPY ${IMAGES}
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/Image
FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_WRITE GROUP_READ WORLD_READ)")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND
${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/foo.cmake)
关于c++ - 在cmake中通过add_custom_command复制时如何更改文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39282243/