cmake Einfacher Ansatz ohne Pakete


Beispiel

Beispiel, das eine ausführbare Datei (Editor) erstellt und eine Bibliothek (Hervorhebung) mit ihr verknüpft. Die Projektstruktur ist unkompliziert. Für jedes Teilprojekt ist eine Master-CMakeLists und ein Verzeichnis erforderlich:

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

Die Master-Datei CMakeLists.txt enthält globale Definitionen und add_subdirectory Aufruf add_subdirectory für jedes Teilprojekt:

cmake_minimum_required(VERSION 3.0)
project(Example)

add_subdirectory(highlight)
add_subdirectory(editor)

CMakeLists.txt für die Bibliothek weist Quellen und Include-Verzeichnisse zu. Durch die Verwendung von target_include_directories() anstelle von include_directories() die Include-Verzeichnisse an Bibliotheksbenutzer weitergegeben:

cmake_minimum_required(VERSION 3.0)
project(highlight)

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

CMakeLists.txt für die Anwendung weist Quellen zu und verknüpft die Markierungsbibliothek. Pfade zu den Binär- und Includes des Hightlighter werden automatisch von cmake gehandhabt:

cmake_minimum_required(VERSION 3.0)
project(editor)

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