Расширенный CMakeLists

Расширенный CMakeLists

Ниже представлены «расширения» для файла CMakeLists благодаря которым становится возможным собирать большие проекты

Установка стандарта языка С++:
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

//——————————————————
//Добавление и работа с библиотеками
//——————————————————

Поиск требуемых библиотек

find_package(libName REQUIRED)
find_library(libName2
    NAMES libName2.a libName2
    PATHS "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}"
)

Поиск/добавление путей к файлам:

find_path(SYSTEMD_INCLUDE_DIRS
  NAMES systemd/sd-bus.h
  PATHS ${SYSTEMD_PKGCONF_INCLUDE_DIRS}
)

Поиск/добавление путей к библиотекам:

find_library(SYSTEMD_LIBRARIES
  NAMES systemd
  PATHS ${SYSTEMD_PKGCONF_LIBRARY_DIRS}
)

//——————————————————
//Добавление и работа с файлами и папками
//——————————————————
Добавление папок (где есть файлы проекта в том числе .h)

include_directories(
    ${PROJECT_SOURCE_DIR}
    ${PROJECT_SOURCE_DIR}/folder
)

Поиск исходных файлов по папкам

file(GLOB_RECURSE SRC_FILES
    ${PROJECT_SOURCE_DIR}/main.cpp
    ${PROJECT_SOURCE_DIR}/folder_src/*.cpp
)

Добавление требуемых документов:

# Related files definition
file(GLOB_RECURSE RELATED_FILES
    "README.md"
)

Добавление файлов в проект

add_executable(${PROJECT_NAME}
    ${SRC_FILES}
    ${RELATED_FILES}
)

//——————————————————
//»Массовая» линковка библиотек
//——————————————————
«Массовая» линковка библиотек

SET(PROJECT_LIBRARIES
    ${varLibName}
    extLib
)

target_link_libraries(${PROJECT_NAME} ${PROJECT_LIBRARIES})

//——————————————————
//Добавление поддиректорий
//——————————————————
add_subdirectory(tests)

В этом случае при сборке cmake зайдет в поддиректорию test и будет выполнять сборку согласно локальному CMakeList.txt если его найдет

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *