在CMake中使用install()时保留单个文件的权限

Ein*_*nar 12 install cmake

在KDE中,我调整了一个宏来编译和安装Python文件,但我遇到了保留文件权限的问题.

更清楚的是,宏观中的违规行是

install(FILES ${SOURCE_FILE} DESTINATION ${DESTINATION_DIR})
Run Code Online (Sandbox Code Playgroud)

这适用于99%的案例.

在一种情况下,虽然我在源目录中有一个标记为可执行文件的Python文件(+ x,我在这里谈论Linux),然后将其符号链接到安装的二进制目录.由于install()不保留权限,因此会从中删除执行位,这会导致以后出现各种问题.

是否可以保留文件的权限,或者读取它们并相应地设置它们?我讨厌使用手动chmod命令,因为它不可移植.

编辑:我不想让这个宏可执行文件安装所有文件,因为这将毫无意义.

arr*_*owd 23

您可以使用+x权限安装文件

install(PROGRAMS ...
Run Code Online (Sandbox Code Playgroud)

命令.

或者,您可以安装整个目录保留文件权限:

install(DIRECTORIES ... USE_SOURCE_PERMISSIONS)
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅 install命令的文档.