【发布时间】:2016-09-01 23:22:42
【问题描述】:
我可以使用类似的东西通过 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 复制时是否可以更改文件权限?
【问题讨论】:
-
copy、copy_directory和copy_if_different命令不应更改文件权限。如果他们这样做,您应该将其作为错误提交给 CMake。我没有看到使用cmake命令行更改文件权限的仅限 CMake 的方法。似乎图像已在源目录中标记为可执行文件。 -
@Torbjörn 真不幸。以我的经验,当在不同的操作系统中推送和拉取文件权限时,文件权限会意外交替。我将向 CMake 提交功能请求。