2012-11-28 27 views
7

Prolog: Jestem idiotą, to brakuje w dokumentacjiJak zachować uprawnienia do plików za pomocą polecenia cmake "katalog instalacyjny"?

cmake-2.8.10.2

Jak zrobić CUpewnij zachować oryginalne uprawnienia plików podczas instalacji katalogu? W przypadku projektu chciałbym zasadniczo skopiować niektóre katalogi z mojego drzewa źródłowego do drzewa instalacji. Na przykład:

install(
    DIRECTORY config runp 
    DESTINATION ${CMAKE_INSTALL_PREFIX} 
    PATTERN ".svn" EXCLUDE 
    PATTERN ".git" EXCLUDE 
    PATTERN "start_collection.snl" EXCLUDE 
) 

Wszystkie prace zgodnie z oczekiwaniami - z wyjątkiem tego, że wykonywalne skrypty są kopiowane z niepoprawnymi uprawnieniami do plików. W rzeczywistości, none oryginalnych uprawnień do plików są zachowane. Globalne ustawianie uprawnień przy użyciu FILE_PERMISSIONS i DIRECTORY_PERMISSIONS jest czymś, czego nie chcę robić, i szczerze mówiąc, byłby to hack w tym kontekście.

W świecie shell-scripting, zrobiłbym coś prostego tak:

for i in config runp ; do 
    tar cf - $i | tar -C $CMAKE_INSTALL_PREFIX -xf - 
done 

Odpowiedz

10

Dokumentacja sugeruje użycie USE_SOURCE_PERMISSIONS Dzwoniąc install():

install(
    DIRECTORY config runp 
    DESTINATION ${CMAKE_INSTALL_PREFIX} 
    USE_SOURCE_PERMISSIONS 
    PATTERN ".svn" EXCLUDE 
    PATTERN ".git" EXCLUDE 
    PATTERN "start_collection.snl" EXCLUDE 
) 

Alternatywnie, można użyć install(PROGRAMS podpis to polecenie. See docs, aby uzyskać więcej informacji.

+0

Cóż, jestem idiotą. Jakoś pominąłem tę opcję w dokumentacji. Dziękuję za wskazanie. – smcdow

+5

Dzięki; chciałem tylko wspomnieć, że 'USE_SOURCE_PERMISSIONS' działa tylko z' install (DIRECTORY) '. Z odpowiedzi nie wynikało to od razu. – congusbongus