2017-08-04 115 views
1

我有一个文件,wrapper.sh.in,有类似以下内容:如何为CMake生成的文件添加执行权限?

#!/bin/bash 
[email protected][email protected] 
/location/of/installed/dependency/${DEPENDENCY_VERSION}/some_script.sh "[email protected]" 

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


这里就是我目前在做我的CMakeLists.txt以产生我的包装脚本:

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


这里就是我试图改变权限的产生包装。 sh脚本。

尝试#1(FAIL):

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(FAIL):

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 
    ) 


什么是正确的方法来改变所产生包装的文件权限.sh脚本到正常脚本(0755)的脚本?

+0

是否意味着构建过程中运行? – arrowd

回答

1

复制文件“at place”在大多数情况下是坏主意。

相反,配置文件分割成一个(中间)的地方,并把它复制(具有权限)到最终位置:

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 
    ) 
相关问题