2017-08-04 111 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 
    ) 
相關問題