2017-08-04 45 views
1

私は、次のようなものを持っているファイル、 wrapper.sh.in 、持っている:このwrapper.sh.inスクリプトは、通常の非実行可能ファイルの通常のファイルアクセス権を持っているCMakeによって生成されたファイルに実行権限を追加する方法は?

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

を(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

ファイルを「場所」にコピーすることは、ほとんどの場合悪い考えです。

代わりに、1(中間)の場所にファイルを構成し、最終的な場所に(変更された権限で)それをコピーします。

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 
    ) 
関連する問題