Trước hết, tôi mới tham gia CMake. Tôi không biết đối số COMPONENT
của lệnh install
có nghĩa là gì và tôi không hiểu tài liệu về CMake này. Ai đó có thể giải thích chi tiết hơn không? Nó sẽ là tốt nhất nếu bạn cho tôi một ví dụ.Đối với lệnh "cài đặt" của CMake, đối số COMPONENT có thể làm gì?
20
A
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.
-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
- 1. Chuyển đối số tới CMAKE qua dấu nhắc lệnh
- 2. Các tệp PDB có cài đặt cmake
- 3. Fabfiles Với các đối số dòng lệnh
- 4. Cài đặt CMake: cài đặt các tệp cấu hình
- 5. Đối với lệnh "bao gồm" cmake, sự khác nhau giữa tệp và mô-đun là gì?
- 6. cmake đối số dạng số không hợp lệ '/ Wextra'
- 7. Thuộc tính "Không thể thay đổi ActiveConnection của đối tượng Recordset có lỗi đối tượng Lệnh là gì?"
- 8. Cách tạo trình cài đặt .msi bằng cmake?
- 9. Làm thế nào để nắm bắt các đối số dòng lệnh CMake?
- 10. Không thể chuyển đối số dòng lệnh trong Ruby 2.0.0
- 11. Làm thế nào tôi có thể nhận được đối số lệnh với D-trace trên OSX
- 12. Cài đặt IIS8 với tham số dòng lệnh
- 13. Sử dụng CMake, làm thế nào tôi có thể concat tập tin và cài đặt chúng
- 14. Đối số dòng lệnh của Dịch vụ Windows Delphi
- 15. Có gì với static_cast với nhiều đối số?
- 16. đối số dòng lệnh với leiningen
- 17. Có thể truy cập các đối số dòng lệnh của vim trong vimscript không?
- 18. Làm thế nào tôi có thể đặt hàng các đối tượng theo một số thuộc tính của trẻ trong OData?
- 19. Thêm đối số dòng lệnh vào trình cài đặt dịch vụ C#
- 20. cmake không nhận ra cài đặt CMAKE_ECLIPSE_VERSION
- 21. Cách chuyển đối số dòng lệnh cho trình cài đặt MSI
- 22. gruntjs - đối số dòng lệnh
- 23. Bạn có thể đặt DefaultDisplayPropertySet của đối tượng trong tập lệnh PowerShell v2 không?
- 24. Ý nghĩa của cài đặt "Đặt thành nhiều hoặc số ít tên đối tượng được tạo" là gì?
- 25. Đối số dòng lệnh cho sbt là gì?
- 26. Các tham số đối với CGPathAddCurveToPoint có nghĩa là gì?
- 27. Cài đặt các tệp bổ sung với CMake
- 28. Làm thế nào để đặt đối số dòng lệnh của chương trình cho GHCi?
- 29. Có thể thêm các lệnh sau khi cài đặt vào Makefile cấp cao nhất được tạo bởi cmake không?
- 30. cmake "cài đặt" cho máy từ xa?
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
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
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