Bạn cần CMakeLists.txt
cho từng thư mục con nguồn. cấu trúc của bạn nên tìm một cái gì đó như thế này:
root
|-MainProject
| |-inc
| | '-main.h
| |-src
| | |-main.cpp
| | '-CMakeLists.txt
| '-CMakeLists.txt
|-LibProject
| |-inc
| | '-test.h
| |-src
| | |-test.cpp
| | '-CMakeLists.txt
| '-CMakeLists.txt
'-CMakeLists.txt
Nội dung root/CMakeLists.txt
:
project(MyProject)
subdirs(MainProject LibProject)
Nội dung LibProject/CMakeLists.txt
và MainProject/CMakeLists.txt
:
subdirs(src)
Nội dung LibProject/src/CMakeLists.txt
:
# Notice name prefix of this variable, set by CMake according
# to value given with "project()" in the root CMakeLists.txt.
include_directories(${MyProject_SOURCE_DIR}/LibProject/inc)
add_library(LibProject test.cpp)
Nội dung MainProject/src/CMakeLists.txt
:
include_directories(${MyProject_SOURCE_DIR}/MainProject/inc)
# I assume you want to use LibProject as a library in MainProject.
include_directories(${MyProject_SOURCE_DIR}/LibProject/inc)
link_directories(${MyProject_SOURCE_DIR}/LibProject/src)
add_executable(MainProject main.cpp)
target_link_libraries(MainProject LibProject)
Sau đó cấu hình và xây dựng với:
$ cd root
$ mkdir build
$ cd build
$ cmake ..
$ make
Nguồn
2011-11-29 01:46:37
Điểm không phải là để sao chép câu trả lời của bạn mà là để hoàn thành nó. Theo như tôi biết nó sẽ không hoạt động nếu thiếu hai 'CMakeLists.txt' và thiếu' link_directories() 'lệnh. Tôi có ý định nhận xét câu trả lời của bạn, nhưng danh tiếng của tôi quá thấp để làm điều đó. Vì vậy, tôi đã tìm ra một câu trả lời thứ hai sẽ là cách tự chứa nhất. Không có ý xúc phạm bạn. –
Nó phải hoạt động mà không có link_directories vì thư viện của nó được xây dựng bởi cùng một dự án. Đối với vấn đề đường dẫn bạn đúng, tôi sẽ sửa nó. – Beginner
Aah cool ok .. thanks – bitgregor