更改cmake install命令的默认文件权限

时间:2017-08-31 14:04:52

标签: cmake

cmake文档告诉我们默认权限是用户读写,组读和其他读。

我们的项目有大量带有INSTALL命令的CMakeLists.txt文件,我们需要所有已安装的文件和目录都是可写组的。有没有办法设置/更改默认权限以包括组写,而不是为每个INSTALL命令添加一个PERMISSIONS规范?

2 个答案:

答案 0 :(得分:2)

我知道无法在CMake中设置更改默认安装权限。 但是,您可以替换install命令以将适当的 PERMISSIONS 附加到其参数。像这样:

function(install TYPE)
    if(TYPE STREQUAL "FILES")
        # install(FILES) command with additional PERMISSIONS option at the end
        _install(FILES ${ARGN}
           PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ
        )
     else()
       # Pass original arguments for other types of install() command
       _install(${TYPE} ${ARGN})
endfunction(install)

在使用install()命令之前,可以将其放在顶级CMakeLists.txt中。或者,此代码可以存储在.cmake脚本中,该脚本可以使用CMakeLists.txt命令包含在顶级include()中。

答案 1 :(得分:1)

对于文件和显式安装的目录,没有全局设置,但是从CMake 3.10.0开始,您可以为自动生成的目录设置安装权限(由于CMAKE_INSTALL_PREFIX设置或在DESTINATION路径中指定而创建的目录):

https://cmake.org/cmake/help/git-stage/variable/CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.html#variable:CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS

和包装:

https://cmake.org/cmake/help/git-stage/variable/CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.html#variable:CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS