2012-11-28 40 views
7

Prolog: Tôi là một thằng ngốc vì bỏ lỡ này trong tài liệuLàm thế nào để bảo vệ quyền truy cập tệp bằng lệnh "install directory" của cmake?

cmake-2.8.10.2

Làm thế nào để bạn thực hiện cmake duy trì các quyền tập tin ban đầu khi cài đặt một thư mục? Đối với dự án ở bàn tay, tôi muốn nó về cơ bản sao chép một số thư mục từ cây nguồn của tôi đến cây cài đặt. Để wit:

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

Tất cả hoạt động như mong đợi - ngoại trừ tập lệnh thực thi được sao chép với quyền tệp không chính xác. Trong thực tế, none quyền của tệp gốc được giữ nguyên. Thiết lập toàn cầu cho phép sử dụng FILE_PERMISSIONS và DIRECTORY_PERMISSIONS là điều tôi không muốn làm, và thẳng thắn, sẽ là một hack trong bối cảnh này.

Trong thế giới vỏ kịch bản, tôi muốn làm một cái gì đó đơn giản như thế này:

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

Trả lời

10

Tài liệu gợi ý sử dụng USE_SOURCE_PERMISSIONS khi gọi install():

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

Ngoài ra, bạn có thể sử dụng chữ ký của install(PROGRAMS lệnh này. See docs để biết thêm thông tin.

+0

Vâng, tôi là một thằng ngốc. Tôi bằng cách nào đó đã đánh bóng ngay trên tùy chọn đó trong tài liệu. Cảm ơn đã chỉ ra điều đó. – smcdow

+5

Cảm ơn; chỉ muốn đề cập rằng 'USE_SOURCE_PERMISSIONS' chỉ hoạt động với' install (DIRECTORY) '. Nó không rõ ràng ngay từ câu trả lời. – congusbongus