Necesita un CMakeLists.txt
para cada subdirectorio fuente. Su estructura debe ser algo como esto:
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
contenido de root/CMakeLists.txt
:
project(MyProject)
subdirs(MainProject LibProject)
contenido de LibProject/CMakeLists.txt
y MainProject/CMakeLists.txt
:
subdirs(src)
contenido de 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)
contenido de 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)
A continuación, configurar y construir con:
$ cd root
$ mkdir build
$ cd build
$ cmake ..
$ make
El punto no era copiar su respuesta, sino completarla. Por lo que sé, no funcionaría sin los dos 'CMakeLists.txt's faltantes y el comando' link_directories() 'faltante. Inicialmente tenía la intención de comentar tu respuesta, pero mi reputación es demasiado baja para hacer eso. Así que pensé que publicar una segunda respuesta sería la manera más autosuficiente. No fue para ofenderte. –
Debe funcionar sin link_directories ya que es una biblioteca creada por el mismo proyecto. En cuanto al problema del camino, tienes razón, lo corregiré. – Beginner
Aah cool ok ... gracias – bitgregor