c++ - online - descarga cmake
CMake con rutas include y source-configuración básica (2)
Necesita un CMakeLists.txt
para cada subdirectorio fuente. Tu estructura debería verse más o menos así:
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)
Luego configura y construye con:
$ cd root
$ mkdir build
$ cd build
$ cmake ..
$ make
Intento establecer un proyecto de prueba que parezca mi propio proyecto para que todo funcione primero y se ve así:
/MainProject/inc/main.h
/MainProject/src/main.cpp
/LibProject/inc/test.h
/LibProject/src/test.cpp
He encontrado algunos tutoriales, pero no puedo averiguar cómo configurar esto cuando tengo la carpeta inc y src. ¿Cómo se verían los archivos CMakeLists.txt? ¿Tendría uno en /, uno en cada una de las carpetas del proyecto? Parece que no necesito tener uno en las carpetas inc y src?
Podrías hacerlo como siguiendo.
CMakeLists.txt en su directorio de MainProject:
project(MainProject) add_subdirectory(LibProject/src) add_subdirectory(MainProject/src)
CMakeLists.txt en su directorio LibProject / src:
include_directories(${PROJECT_SRC_DIR}/LibProject/inc/) add_library(LibProject test.cpp)
CMakeLists.txt en su directorio MainProject / src:
include_directories(${PROJECT_SRC_DIR}/MainProject/inc/) add_executable(MainProject main.cpp) target_link_libraries(MainProject LibProject)