2012-02-08 17 views

Trả lời

33

Bạn có thể cài đặt các mục tiêu nhóm thành các thành phần, ví dụ như "tài liệu", "libs", "thời gian chạy", vv

add_library(libone libone.c) 
add_executable(one main1.c) 
install(TARGETS libone one DESTINATION /somedir COMPONENT comp_one) 

add_library(libtwo libtwo.c) 
add_executable(two main2.c) 
install(TARGETS libtwo two DESTINATION /somedir COMPONENT comp_two) 

Điều này làm cho nó có thể chạy cmake -DCOMPONENT=comp_one -P {your_build_dir}/cmake_install.cmake để cài đặt chỉ thư viện libone và một thực thi . Khi bạn phát hành make install tất cả các thành phần được cài đặt.

+0

Cám ơn câu trả lời của bạn. thành phần sẽ cài đặt cùng với mục tiêu trong một tệp hoặc trong cùng thư mục với tệp khác? Theo tôi, tôi có thể cài đặt các mục tiêu khác nhau như thế này: cài đặt (MỤC TIÊU myExe mySharedLib myStaticLib RUNTIME DESTINATION bin LIBRARY DESTINATION lib LƯU TRỮ lib/tĩnh). SO đó là tốt hơn – Samuel

+0

Nó không phải về dirs đích, nhưng mà mục tiêu để cài đặt. Ví dụ, nếu bạn có 4 mệnh đề 'install()', 2 với 'COMPONENT a' và 2 với' COMPONENT b'. Sau đó, nếu bạn chạy 'make install', tất cả 4 mục tiêu sẽ được cài đặt, nhưng chỉ 2 nếu bạn chỉ định tên thành phần -" a "hoặc" b ". – arrowd

+0

Xin lỗi, một thành phần là gì. Nó vẫn còn làm tôi bối rối, bạn có thể cho tôi một mã thử nghiệm không. sau đó tôi có thể chạy nó. và thấy một số khác biệt – Samuel

-7

Có ba cách bạn có thể sử dụng lệnh cài đặt trong CMake.

(1) Cài đặt Executable

INSTALL(TARGETS ExecutableTarget RUNTIME DESTINATION FOLDER_LOCATION) 

(2) Cài đặt thư viện tĩnh

INSTALL(TARGETS StaticLibraryTarget ARCHIVE DESTINATION FOLDER_LOCATION) 

(3) Cài đặt thư viện động

INSTALL(TARGETS SharedLibraryTarget LIBRARY DESTINATION FOLDER_LOCATION) 
+3

-1 vì câu hỏi là về ý nghĩa của từ khóa 'COMPONENT'. Câu trả lời này thể hiện ba loại * mục tiêu là khái niệm trực giao. –

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