如何使用cmake"安装目录"指令保留文件权限?

smc*_*dow 8 directory install file-permissions cmake preserve

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
)
Run Code Online (Sandbox Code Playgroud)

所有工作都按预期工作 - 除了使用不正确的文件权限复制可执行脚本.实际上,没有保留原始文件权限.使用FILE_PERMISSIONS和DIRECTORY_PERMISSIONS全局设置权限是我不想做的事情,坦率地说,在这种情况下会是一个黑客.

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

for i in config runp ; do
  tar cf - $i | tar -C $CMAKE_INSTALL_PREFIX -xf -
done
Run Code Online (Sandbox Code Playgroud)

arr*_*owd 11

文档建议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
)
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢; 只想提一下`USE_SOURCE_PERMISSIONS`只适用于`install(DIRECTORY)`.答案并不是立即显而易见的. (5认同)