2015-09-30 14 views
5

Tôi có một dự án (với các tiểu dự án) mà tôi muốn tạo nhiều trình cài đặt NSIS, thay vì có nhiều thành phần được liệt kê trong một trình cài đặt NSIS. Điều này có thể không? Hoặc tôi có cần sắp xếp mã của mình thành các dự án riêng biệt không?CMake/CPack có thể tạo nhiều trình cài đặt NSIS cho một dự án không?

+0

Bạn có muốn thực thi trình cài đặt cho mỗi tiểu dự án không? Nếu vậy, tại sao không xây dựng mỗi tiểu dự án một mình, với trình cài đặt của nó? Để cài đặt NSIS (và bất kỳ phần mềm nào khác) để tách các tệp đã cài đặt, bạn cần gán chúng cho các thành phần * khác nhau *. Lệnh 'project()', khởi động mọi tiểu dự án, không có sence cho CPack. – Tsyvarev

Trả lời

0

Có thể cung cấp thuộc tính CMake, ví dụ: COMPONENT có thể được đặt thành giá trị từ một nhóm tên gói được xác định trước như: COMPONENT_1 | COMPONENT_2 | ... COMPONENT_X

Tên gói thậm chí có thể là tên không tương ứng với tên thành phần duy nhất nhưng tập hợp các thành phần sẽ được thêm vào trong CPACK_COMPONENTS_ALL. Nếu COMPONENT bằng ALL_COMPONENTS thì giá trị của CPACK_COMPONENTS_ALL sẽ chứa tất cả các thành phần có thể có.

Bao bì cmake:

if (WIN32) 
    set (CPACK_COMPONENTS_ALL ${COMPONENT}) 
    set (CPACK_PACKAGE_NAME ${COMPONENT}) 
    set (CPACK_COMPONENT_${COMPONENT}_DISPLAY_NAME "${COMPONENT}") 
    set (CPACK_COMPONENT_${COMPONENT}_DESCRIPTION "${COMPONENT}") 
    set (CPACK_NSIS_DISPLAY_NAME "${COMPONENT}") 
    set (CPACK_NSIS_PACKAGE_NAME "${COMPONENT}") 
    set (CPACK_NSIS_INSTALL_ROOT "C:") 
    set (CPACK_GENERATOR NSIS) 
else() 
    ... 
endif() 

Để tạo một trình cài đặt cho mỗi thành phần bạn sẽ chạy ví dụ:

cmake -COMPONENT=COMPONENT_1 ../ 
nmake package 
cmake -COMPONENT=COMPONENT_2 ../ 
nmake package 
... 
cmake -COMPONENT=COMPONENT_X ../ 
nmake package 

Gấu nhớ rằng kể từ khi mã nhị phân được xây dựng trên việc thực hiện đầu tiên của nmake package , các cuộc gọi tiếp theo tới cmakenmake package sẽ chỉ định cấu hình lại bao bì và chỉ tạo COMPONENT được yêu cầu (còn gọi là COMPONENT)

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