Tôi đã đấu tranh với điều này trong một thời gian dài, và cuộc phiêu lưu của tôi với cmake chỉ dẫn đến các giải pháp hackish mà tôi khá chắc chắn là không chính xác.Cách đúng để cấu trúc dự án C++ của tôi với cmake?
Tôi tạo ra một thư viện mà bao gồm một số tác phẩm, như sau:
-libfolder
-codepart1folder
-CMakeLists.txt
-codepart1.cpp
-codepart1.hpp
-codepart2folder
-codepart3folder
-lib.cpp
-lib.hpp
-CMakeLists.txt
Tôi đã viết một tập tin CMakeLists để biên dịch các thư viện (sau khi một số thử nghiệm), và tôi có thể tạo ra một tập tin lib.a. Bây giờ tôi muốn bao gồm mã này như một thư viện trong các dự án khác, và truy cập nó thông qua giao diện trong lib.hpp. Cách tốt nhất để làm điều này, về cấu trúc thư mục, và những gì tôi cần phải đưa vào CMakeLists.txt trong dự án gốc của tôi là gì?
nỗ lực hiện tại của tôi đã được thêm -libfolder như một thư mục con cho dự án hiện tại của tôi, và thêm các lệnh:
include_directories(${PROJECT_SOURCE_DIR}/libfolder)
link_directories(${PROJECT_BINARY_DIR}/libfolder)
add_subdirectory(libfolder)
target_link_libraries(project lib)
Khi tôi chạy make, thư viện biên dịch tốt, nhưng khi project.cpp biên dịch, nó phàn nàn rằng nó không thể tìm thấy codepart1.hpp (được bao gồm trong lib.hpp, bao gồm từ project.cpp).
Tôi nghi ngờ rằng đây là một cách sai lầm về việc này, nhưng tôi không thể lội qua tài liệu CMake và tìm thấy một hướng dẫn tốt về việc thiết lập các dự án như thế này. Xin hãy giúp, CMake rất kinh nghiệm!
Có lẽ không hữu ích lắm đối với cmake cho mỗi lần xem, nhưng tôi khuyên bạn nên xem xét trước. Đó là gần đến sự trưởng thành và có nhiều lợi thế để cmake (một là nó là một heck của rất nhiều nhanh hơn để có được lên đến tốc độ với nó, đặc biệt là nếu bạn đã biết lua). Bạn có thể kiểm tra nó tại http://industriousone.com/what-premake. – Ylisar
vì vậy, bạn có muốn cho phép dự án mới của mình sử dụng thư viện được xây dựng trước đó hay bạn muốn xây dựng cả hai từ một dự án meta sắp xếp? – moooeeeep