如何使用 cmake "install directory" 指令保留文件权限?



Prolog:我是个白痴,因为我在文档中错过了这个

cmake-2.8.10.2

在安装目录时,如何使cmake保留原始文件权限?对于手头的项目,我希望它基本上将一些目录从源树复制到安装树。也就是说:

install(
DIRECTORY config runp
DESTINATION ${CMAKE_INSTALL_PREFIX}
PATTERN ".svn" EXCLUDE
PATTERN ".git" EXCLUDE
PATTERN "start_collection.snl" EXCLUDE
)

所有操作都按预期进行——除了可执行脚本是用不正确的文件权限复制的。事实上,没有原始文件权限被保留。使用FILE_permissions和DIRECTORY_permissions全局设置权限是我不想做的事情,坦率地说,在这种情况下,这将是一种黑客行为。

在shell脚本世界中,我会做一些简单的事情,比如:

for i in config runp ; do
tar cf - $i | tar -C $CMAKE_INSTALL_PREFIX -xf -
done

文档建议在调用install():时使用USE_SOURCE_PERMISSIONS

install(
DIRECTORY config runp
DESTINATION ${CMAKE_INSTALL_PREFIX}
USE_SOURCE_PERMISSIONS
PATTERN ".svn" EXCLUDE
PATTERN ".git" EXCLUDE
PATTERN "start_collection.snl" EXCLUDE
)

或者,您可以使用此命令的install(PROGRAMS签名。有关详细信息,请参阅文档。

相关内容

最新更新