更改CMake中文件的权限

问题描述 投票:0回答:4

我使用 CMake 创建了一个 shell 脚本,如下所示:

file(WRITE somescript.sh "echo foo!")

我希望用户能够立即执行该脚本。为此,最好从 CMake 中更改该文件的权限。

CMake中有类似

chmod u+x somescript.sh
的东西吗?

bash shell build permissions cmake
4个回答
4
投票

install
的问题是,当目标目录等于源目录并且文件本身没有更改时,现有文件不会被覆盖(CMake 似乎比较时间戳)。但没关系,我为大家找到了一个可行的解决方案:

  1. 创建问题中所示的文件,但位于临时文件夹中
    ${CMAKE_BINARY_DIR}/tmp
  2. 使用
    file (COPY ${CMAKE_BINARY_DIR}/tmp/somescript.sh DESTINATION ${CMAKE_BINARY_DIR} FILE_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ)
  3. 删除旧文件和临时目录:
    file(REMOVE_RECURSIVE ${CMAKE_BINARY_DIR}/tmp/)

1
投票

您可以在 istall 命令中执行此操作。使用此标签:

install(
    FILES somescript.sh
    PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
    DESTINATION /some/destination
)

0
投票

如果你想复制二进制文件,我会使用 USE_SOURCE_PERMISSIONS


0
投票

从 cmake 版本 3.19 开始,现在可以使用 file(CHMOD ...) 命令。语法是:

file(CHMOD <files>... <directories>... [PERMISSIONS <permissions>...] [FILE_PERMISSIONS <permissions>...] [DIRECTORY_PERMISSIONS <permissions>...])

例如:

file(CHMOD somescript.sh PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ)

请参阅文档了解更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.