cmake Enfoque sencillo sin paquetes.


Ejemplo

Ejemplo que crea un ejecutable (editor) y vincula una biblioteca (resaltado) a él. La estructura del proyecto es sencilla, necesita un CMakeLists maestro y un directorio para cada subproyecto:

CMakeLists.txt
editor/
    CMakeLists.txt
    src/
        editor.cpp
highlight/
    CMakeLists.txt
    include/
        highlight.h
    src/
        highlight.cpp

El maestro CMakeLists.txt contiene definiciones globales y la llamada add_subdirectory para cada subproyecto:

cmake_minimum_required(VERSION 3.0)
project(Example)

add_subdirectory(highlight)
add_subdirectory(editor)

CMakeLists.txt para la biblioteca asigna orígenes e incluye directorios. Al usar target_include_directories() lugar de include_directories() los directorios de inclusión se propagarán a los usuarios de la biblioteca:

cmake_minimum_required(VERSION 3.0)
project(highlight)

add_library(${PROJECT_NAME} src/highlight.cpp)
target_include_directories(${PROJECT_NAME} PUBLIC include)

CMakeLists.txt para la aplicación asigna fuentes y vincula la biblioteca de resaltado. Las rutas al binario de hightlighter e incluyen se manejan automáticamente por cmake:

cmake_minimum_required(VERSION 3.0)
project(editor)

add_executable(${PROJECT_NAME} src/editor.cpp)
target_link_libraries(${PROJECT_NAME} PUBLIC highlight)