tutorial online how español descarga c++ cmake

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)