2013-08-08 38 views
19

Tôi hiện đang phát triển một ứng dụng dành cho máy tính để bàn, sử dụng C++ REST SDK (tên mã là Casablanca), Qt5 và một số thư viện khác.CMake và MsVS-NuGet

Để thiết lập dự án, tôi sử dụng CMake.

Làm cách nào để yêu cầu CMake cài đặt Gói NuGet?

Tôi phải cài đặt nó mỗi lần theo cách thủ công, nếu tôi chạy lại CMake, đây không thực sự là một lựa chọn.

+2

Đây là một câu hỏi hay, mặc dù tôi nghi ngờ bạn đang thực sự sử dụng công cụ sai cho công việc. Nếu bạn là cửa sổ cụ thể, không có điểm trong việc sử dụng CMake. Lý do duy nhất để sử dụng CMake là nền tảng mutli, nhưng bạn không thể sử dụng các gói NuGet nhiều. Tất nhiên tôi có thể tưởng tượng một dự án mà phần lớn là đa nền tảng, nhưng có một số thành phần đặc trưng cho cửa sổ cần gói NuGet và câu hỏi này có ý nghĩa hoàn hảo. –

+1

Tuy nhiên tôi nghĩ rằng câu hỏi nên được đăng lên Stack Overflow. –

+0

@JanHudec a) Có, tôi biết điều đó, nhưng thiết lập dự án thông qua CMake là cách dễ nhất tôi biết khi sử dụng các thư viện như Qt. b) cách đó? Không phải là một chút quá cụ thể cho StackOverflow? –

Trả lời

15

Dòng tham khảo lệnh của NuGet tọa lạc tại http://docs.nuget.org/docs/reference/command-line-reference

Bạn có thể cài đặt các gói sử dụng nuget install hoặc nuget restore lệnh. nuget update cập nhật các gói đã cài đặt (restore phải được chạy thủ công).

Bạn có thể hướng dẫn cmake để chạy NuGet trước mỗi build bằng cách sử dụng:

add_custom_command(TARGET ${PROJECT_NAME} 
    PRE_BUILD 
    COMMAND nuget restore ${CMAKE_BINARY_DIR}\yourSolution.sln 
) 

hoặc vào lúc cấu hình sử dụng execute_process.

Bạn có thể chuẩn bị tệp cấu hình nuget bằng cách sử dụng configure_file hoặc sử dụng trực tiếp các lệnh nuget install thích hợp.

+0

Tôi không nghĩ rằng cmake sẽ sẵn sàng để thêm nugets vào giải pháp, do đó, một tập tin cấu hình riêng biệt hoặc 'install' rõ ràng là có thể cần thiết. Tôi cũng sẽ chạy cài đặt trong quá trình cấu hình (thông qua 'execute_process').Nó đơn giản hơn một chút và IDE sẽ thấy các gói có sẵn khi nó bắt đầu. –

+0

trong khi tôi muốn kiểm tra điều đó, tôi phải nói rằng tôi đã đóng cửa dự án nửa năm trước ... (tôi cũng quyết định không sử dụng thư viện liên quan đến nuget) –

+0

ai đó có thể chỉnh sửa câu trả lời và viết đúng oneliner? – Sergei