2012-10-30 26 views
17

Tôi muốn tạo trình cài đặt đa nền tảng cho hệ thống dựa trên C++ mà tôi đang xây dựng.Cách tạo trình cài đặt với CMake + CPack + NSIS trên Windows?

Tôi sử dụng CMake để xây dựng mọi thứ và sẽ tuyệt vời nếu tôi có thể sử dụng CPack để tạo trình cài đặt. Tôi đã có CPack làm việc trên OSX, nhưng tôi không thể làm cho nó hoạt động trên Windows. Để dễ dàng hơn, tôi đã cố gắng lấy ví dụ tại http://www.cmake.org/Wiki/CMake:Packaging_With_CPack để làm việc với phần mềm cài đặt NSIS. Tôi không thể tìm thấy trình cài đặt NSIS ở bất cứ đâu sau khi cấu hình (với trình tạo Win64 của VS 2010).

Có lẽ tôi đang bối rối, nhưng tôi nghĩ rằng sẽ có thể tạo gói cài đặt chỉ với nguồn, CMake, CPack và NSIS mà không cần bất kỳ Visual Studio nào. Điều này có thể không?

Liên kết đến hướng dẫn đầy đủ (số http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack bỏ qua thông tin liên quan để NSIS hoạt động và không đề cập đến máy phát hoặc trình biên dịch) sẽ rất hữu ích hoặc giải thích cơ bản về cách tôi có thể trình cài đặt NSIS được tạo sẽ rất tuyệt vời.

Đây là CMakeLists.txt cho ví dụ trên:

cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR) 
project(StPMS) 

add_library(mylib mylib.cpp) 

add_executable(mylibapp mylibapp.cpp) 
target_link_libraries(mylibapp mylib) 

install(TARGETS mylib 
    ARCHIVE 
    DESTINATION lib 
    COMPONENT libraries) 
install(TARGETS mylibapp 
    RUNTIME 
    DESTINATION bin 
    COMPONENT applications) 
install(FILES mylib.h 
    DESTINATION include 
    COMPONENT headers) 

set(CPACK_GENERATOR NSIS) 
set(CPACK_PACKAGE_NAME "MyLib") 
set(CPACK_PACKAGE_VENDOR "CMake.org") 
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MyLib - CPack Component Installation Example") 
set(CPACK_PACKAGE_VERSION "1.0.0") 
set(CPACK_PACKAGE_VERSION_MAJOR "1") 
set(CPACK_PACKAGE_VERSION_MINOR "0") 
set(CPACK_PACKAGE_VERSION_PATCH "0") 
set(CPACK_PACKAGE_INSTALL_DIRECTORY "CPack Component Example") 
SET(CPACK_NSIS_MODIFY_PATH ON) 

INCLUDE(CPack) 

Trả lời

26

... Tôi nghĩ rằng nó sẽ có thể để tạo ra các gói cài đặt với chỉ nguồn, CMake, CPack, và NSIS mà không cần bất kỳ cần cho Visual Studio. Điều này có thể không?

Loại. Nó phụ thuộc vào những gì bạn có nghĩa là bởi "mà không cần bất kỳ cho Visual Studio". Bạn cần một công cụ xây dựng để thực sự tạo ra lib và exe. Trên Windows, bạn cần một cái gì đó như msbuild của Visual Studio, đặc biệt nếu bạn chỉ định "Visual Studio 10 Win64" làm trình tạo.

Nếu bạn muốn nói "không chạy Visual Studio" thì câu trả lời là có. Bạn có thể có CMake thực thi công cụ xây dựng đã chọn của mình bằng cách sử dụng đối số --build.

Sau khi chạy CMake, bạn kết thúc bằng một tệp PACKAGE.vcxproj trong thư mục xây dựng của bạn. Nó được xây dựng này sẽ tạo ra trình cài đặt. Bạn có thể xây dựng dự án PACKAGE từ bên trong Visual Studio hoặc bạn có thể gọi trực tiếp msbuild bằng cách thực hiện:

msbuild /P:Configuration=Release PACKAGE.vcxproj 

từ thư mục xây dựng của bạn trong dấu nhắc lệnh VS.

Điều này sẽ mang lại trình cài đặt của bạn có tên MyLib-1.0.0-win64.exe, cũng trong thư mục xây dựng của bạn.


Nếu bạn muốn chỉ cần sử dụng CMake, sau đó một thay thế cho cách gọi msbuild là:

cmake --build . --target PACKAGE.vcxproj --config Release 


Hoặc bạn có thể xây dựng các giải pháp đầu tiên, sau đó gọi CPack để tạo bộ cài đặt:

cmake --build . --config Release 
cpack -C Release 
+2

Hoàn hảo. Tôi không thể tìm thấy bất kỳ tài liệu mạch lạc nào liên quan đến việc phải làm gì khi người ta đến điểm sử dụng VS. Tôi thực sự đánh giá cao sự giúp đỡ! – sklum

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