9

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 全局设置权限是我不想做的事情,坦率地说,在这种情况下,这将是一个 hack。

在 shell 脚本世界中,我会做这样简单的事情:

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

1 回答 1

13

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

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

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

于 2012-11-29T10:43:51.760 回答