2012-04-18 26 views
5

Tôi đang sử dụng cmake và cpack để xây dựng dự án và xây dựng gói của mình. Tôi đang tạo một vài tệp thi hành trong dự án của mình, hãy gọi cho họ EXE1EXE2.cmake: cài đặt tập tin thực thi và tạo liên kết đến chúng

Khi tạo các phiên bản khác nhau của các tệp thi hành này, tôi muốn đặt tên để phản ánh phiên bản của tệp thực thi (giả sử EXE1_1.0.0). Tôi có thể thay đổi tên của đầu ra cho một mục tiêu bằng cách thực hiện set_target_properties.

Tuy nhiên, bây giờ khi làm một install, tôi muốn làm tạo ra một liên kết tượng trưng cho tên này là phiên bản của file thực thi, tức là tôi muốn có

  • các "phiên bản" thực thi cài đặt trong bin thư mục, ví dụ EXE1_1.0.0
  • tạo ra một liên kết tượng trưng để thực thi "phiên bản", tức là tạo liên kết tượng trưng EXE1, mà điểm đến EXE1_1.0.0

ai đó có thể gợi ý cho tôi làm thế nào để làm cái này?

Câu hỏi thứ hai là: Cách cài đặt tệp cấu hình/etc/MYPROJECT/directory? Tôi cần sử dụng DESTINATION nào cho các tệp cấu hình, như tôi sử dụng bin cho các tệp thực thi và lib cho các thư viện? Đang sử dụng đường dẫn tuyệt đối như /etc thực hành có thể chấp nhận được với cmake?

+0

bạn nên trả lời câu hỏi của riêng bạn ở đây bằng cách đăng câu trả lời dành cho bạn trên mailing list CMake. – Fraser

+0

Cảm ơn bạn đã chỉ ra điều này. – Lazylabs

Trả lời

3

Tôi hỏi câu hỏi này trên mailing list cmake sau đó, và đây là câu trả lời tôi nhận được:

Hiệu lực của câu trả lời sẽ phụ thuộc vào CMake phiên bản bạn sử dụng và đó thiết lập các nền tảng mà bạn muốn ủng hộ.

symlink không phải là di

a) Sáng tạo có thể không được [hiện] thực hiện portably nhưng nếu bạn đang nhắm mục tiêu Unix bạn có thể sử dụng cmake -E create_symlink để tạo ra một.

b) Tùy thuộc vào trình tạo CPack bạn sử dụng và phiên bản CMake/CPack
có thể được nhúng trong gói này hay không.

tức là CPack trước 2.8.7 không thể tạo lưu trữ ZIP có chứa liên kết tượng trưng CPack 2.8.8 có thể làm điều đó ngay bây giờ.

Sau đó, bạn có thể sử dụng một cài đặt (SCRIPT ... hoặc cài đặt (CODE ...) để làm điều đó lúc cài đặt thời gian.

Một lựa chọn khác nếu bạn đang sử dụng RPM là sử dụng gói cụ thể bài cài đặt kịch bản. cpack --help biến CPACK_RPM_POST_INSTALL_SCRIPT_FILE

giải pháp cuối cùng này sẽ tắt khóa học chỉ làm việc cho cPack RPM.

đối với câu hỏi thứ hai

Bạn có thể sử dụng đường dẫn đích tuyệt đối, chúng sẽ được xử lý chỉ phạt bởi CPack DEB và RPM, tôi không biết cho người khác.

Nếu phần mềm của bạn nên được cài đặt trên Windows, điều này sẽ không hoạt động với trình tạo lưu trữ (ZIP, TGZ, v.v ...) và/hoặc NSIS.

Có thể là bạn có thể làm một cái gì đó như:

if (UNIX VÀ KHÔNG APPLE) set (CONFDEST "/ etc/$ {CMAKE_PROJECT_NAME}") khác() set (CONFDEST "vv") endif()

cài đặt (FILES yourconffile ĐIỂM đẾN $ {CONFDEST})

Các vấn đề liên quan