2014-04-07 19 views
5

Tôi đang tìm kiếm một dự án có thể phân phối lại cho Windows và Linux bằng CMake làm hệ thống cấu hình dự án và gcc-4.8/VS2012, cộng với thư viện thứ ba bổ sung như Qt5. Làm thế nào tôi có thể tạo một gói với tất cả các phụ thuộc cần thiết và làm cho dự án chạy trên các máy khác, mà không cần cài đặt trên các máy đó các gói cần thiết (tức là thiết lập Qt5)?Tạo dự án có thể phân phối lại với CMake

EDIT

Googling nặng nề tôi đã tìm thấy Qt5 đòi hỏi một số tập tin và tôi đã tìm thấy cuộc thảo luận này Application deployed with QT5 libraries does not start on Windows 7

điều này giải thích sự phụ thuộc Qt5 yêu cầu.

+2

Trên cửa sổ, tôi thực hiện việc này với các dự án dựa trên CMake của tôi trong tập lệnh CMakeLists.txt của tôi. Tôi có nghĩa là tôi có một kịch bản bao gồm các microsoft redistributable chính xác và tôi cũng có kịch bản cmake thu thập một danh sách của tất cả các dll phụ thuộc. Với danh sách này, tôi thêm chúng vào các thành phần trong các thiết lập cpack của tôi để tạo ra một trình cài đặt nsis. CMake có một mô-đun bó có thể thực hiện một số điều này cho bạn mà không cần phải viết kịch bản. Vì tôi đã phát triển các tập lệnh của mình nhiều năm trước nên tôi đã để nó như vậy .. – drescherjm

+0

@drescherjm: bạn có thể chia sẻ tập lệnh này không? – madduci

+0

Tôi sẽ thấy những gì tôi có thể làm. Các kịch bản có chứa một vài macro không được mô tả tốt vì vậy tôi sẽ phải ghi lại điều này. – drescherjm

Trả lời

1

Thông thường, tôi sẽ sử dụng install để liệt kê các tệp mong muốn và CPack để đóng gói chúng. Đó là, giả sử tôi muốn tạo một gói bao gồm các thành phần sau:

  • my_nifty_library.dll
  • my_nifty_executable.exe
  • QtCore.dll
  • QtGUI.dll

(Disclaimer: Tôi không Chuyên gia Qt nên hai tệp cuối cùng có thể không tồn tại chút nào, nhưng bạn có ý tưởng.)

Cho rằng cả my_nifty_librarymy_nifty_executable là một phần của dự án của bạn, bạn có thể kiểm soát chúng, vì vậy chỉ cần làm như sau:

install(TARGETS my_nifty_library my_nifty_executable 
     RUNTIME DESTINATION bin 
     LIBRARY DESTINATION lib 
     ARCHIVE DESTINATION lib) 

Bây giờ, kể từ khi Qt sẽ không được xây dựng như một phần của dự án của bạn, tôi đề nghị bạn sử dụng mô-đun ExternalProject.

Bây giờ, bạn có thể sử dụng CPack và tạo, ví dụ, trình cài đặt NSIS hoặc tar.gz trong số các tệp đã cài đặt.

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