cmake
Иерархический проект
Поиск…
Простой подход без пакетов
Пример, который создает исполняемый файл (редактор) и связывает библиотеку (выделение) с ней. Структура проекта проста, для этого требуется мастер CMakeLists и каталог для каждого подпроекта:
CMakeLists.txt
editor/
CMakeLists.txt
src/
editor.cpp
highlight/
CMakeLists.txt
include/
highlight.h
src/
highlight.cpp
Мастер CMakeLists.txt содержит глобальные определения и вызов add_subdirectory
для каждого подпроекта:
cmake_minimum_required(VERSION 3.0)
project(Example)
add_subdirectory(highlight)
add_subdirectory(editor)
CMakeLists.txt для библиотеки назначает источники и включает в себя каталоги. Используя target_include_directories()
вместо include_directories()
target_include_directories()
dirs будут распространяться на пользователей библиотеки:
cmake_minimum_required(VERSION 3.0)
project(highlight)
add_library(${PROJECT_NAME} src/highlight.cpp)
target_include_directories(${PROJECT_NAME} PUBLIC include)
CMakeLists.txt для приложения назначает источники и связывает выделенную библиотеку. Пути к бинарнику и включают в себя автоматическое управление cmake:
cmake_minimum_required(VERSION 3.0)
project(editor)
add_executable(${PROJECT_NAME} src/editor.cpp)
target_link_libraries(${PROJECT_NAME} PUBLIC highlight)
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow