如何在cmake的"安装目录"指令中保留文件权限?

11

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
1个回答

17

文档建议在调用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签名。有关更多信息,请参见文档


好吧,我是个白痴。我在文档中不知怎么就忽略了那个选项。感谢你指出来。 - smcdow
10
谢谢。我只想提醒一下,“USE_SOURCE_PERMISSIONS”只能与“install(DIRECTORY)”一起使用。从答案中并不立即明显。 - congusbongus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接