cmake Approche simple sans paquets


Exemple

Exemple qui construit un exécutable (éditeur) et lui associe une bibliothèque (mettre en évidence). La structure du projet est simple, il faut un maître CMakeLists et un répertoire pour chaque sous-projet:

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

Le fichier CMakeLists.txt principal contient des définitions globales et add_subdirectory appel add_subdirectory pour chaque sous-projet:

cmake_minimum_required(VERSION 3.0)
project(Example)

add_subdirectory(highlight)
add_subdirectory(editor)

CMakeLists.txt pour la bibliothèque lui affecte des sources et y inclut des répertoires. En utilisant target_include_directories() au lieu de include_directories() les répertoires include seront propagés aux utilisateurs de la bibliothèque:

cmake_minimum_required(VERSION 3.0)
project(highlight)

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

CMakeLists.txt pour l'application attribue des sources et lie la bibliothèque de surbrillance. Les chemins d'accès au binaire de hightlighter et aux include sont gérés automatiquement par cmake:

cmake_minimum_required(VERSION 3.0)
project(editor)

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