Potrzebujesz CMakeLists.txt
dla każdego podkatalogu źródłowego. Twoja struktura powinna wyglądać mniej więcej tak:
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
zawartości root/CMakeLists.txt
:
project(MyProject)
subdirs(MainProject LibProject)
zawartości LibProject/CMakeLists.txt
i MainProject/CMakeLists.txt
:
subdirs(src)
zawartości 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)
Zawartość 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)
Następnie należy skonfigurować i zbudować z:
$ cd root
$ mkdir build
$ cd build
$ cmake ..
$ make
Nie chodziło o skopiowanie odpowiedzi, ale raczej o jej uzupełnienie. O ile mi wiadomo, nie działałoby bez dwóch brakujących 'CMakeLists.txt' i brakujących' link_directories() 'polecenia. Pierwotnie zamierzałem skomentować twoją odpowiedź, ale moja reputacja jest zbyt niska, by to zrobić. Postanowiłem więc, że druga odpowiedź będzie najbardziej samodzielna. Nie chciał cię urazić. –
Musi działać bez katalogu_linków, ponieważ jest to biblioteka zbudowana przez ten sam projekt. Jeśli chodzi o problem z trasą, masz rację, poprawię to. – Beginner
Aah cool ok .. thanks – bitgregor