gpt4 book ai didi

cmake - 如何为CMake生成的文件添加执行权限?

转载 作者:行者123 更新时间:2023-12-05 03:08:16 27 4
gpt4 key购买 nike

我有一个文件,wrapper.sh.in,其中包含如下内容:

#!/bin/bash
DEPENDENCY_VERSION=@dependency_VERSION@
/location/of/installed/dependency/${DEPENDENCY_VERSION}/some_script.sh "$@"

这个 wrapper.sh.in 脚本具有常规不可执行文件 (0644) 的通常文件权限,但我需要 CMake 生成的文件具有执行权限,因为它是一个脚本,因此意味着要运行。


这是我目前在我的 CMakeLists.txt 中为生成我的包装脚本所做的事情:

configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/wrapper.sh.in
${CMAKE_CURRENT_SOURCE_DIR}/wrapper.sh
@ONLY
)


以下是我为更改生成的 wrapper.sh 脚本的权限所做的尝试。

尝试 #1(失败):

file(
COPY ${CMAKE_CURRENT_SOURCE_DIR}/wrapper.sh
DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)

尝试 #2(失败):

install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/wrapper.sh
DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
COMPONENT runtime
)


将生成的 wrapper.sh 脚本的文件权限更改为普通脚本 (0755) 的文件权限的正确方法是什么?

最佳答案

“就地”复制文件在大多数情况下是个坏主意。

相反,将文件配置到一个(中间)位置,然后将其(更改权限)复制到最终位置:

configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/wrapper.sh.in
${CMAKE_CURRENT_SOURCE_DIR}/tmp/wrapper.sh
@ONLY
)

file(
COPY ${CMAKE_CURRENT_SOURCE_DIR}/tmp/wrapper.sh
DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)

关于cmake - 如何为CMake生成的文件添加执行权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45513862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com