cmake Proste podejście bez pakietów


Przykład

Przykład budujący plik wykonywalny (edytor) i łączący z nim bibliotekę (wyróżnienie). Struktura projektu jest prosta, potrzebuje głównego CMakeLists i katalogu dla każdego podprojektu:

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

Główny add_subdirectory zawiera definicje globalne i wywołanie add_subdirectory dla każdego podprojektu:

cmake_minimum_required(VERSION 3.0)
project(Example)

add_subdirectory(highlight)
add_subdirectory(editor)

CMakeLists.txt dla biblioteki przypisuje źródła i dołącza do niej katalogi. Za pomocą target_include_directories() zamiast include_directories() target_include_directories() dołączania zostaną rozpowszechnione wśród użytkowników biblioteki:

cmake_minimum_required(VERSION 3.0)
project(highlight)

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

CMakeLists.txt dla aplikacji przypisuje źródła i łączy bibliotekę wyróżnień. Ścieżki do plików binarnych i hightlighterów są obsługiwane automatycznie przez cmake:

cmake_minimum_required(VERSION 3.0)
project(editor)

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