CMake и примеры

CMake для проектов на C++ и Qt: структура CMakeLists.txt, подключение библиотек, сборка под разные платформы, типичные ошибки конфигурации. Примеры от минимального проекта до многомодульной сборки с тестами.

Cmake

FetchContent и ExternalProject: подключение внешних зависимостей без системного менеджера пакетов

Введение Статья 578 разобрала find_package для уже установленных в системе библиотек — FetchContent и ExternalProject решают альтернативную задачу: автоматическое скачивание и сборку зависимости прямо в процессе конфигурации/сборки текущего…

Cmake

Генераторные выражения (generator expressions): $<...>, условная конфигурация

Введение Статья 576 кратко использовала генераторное выражение $<$<CONFIG:Debug>:...> без подробного объяснения — в этой статье разберём этот специфичный, но мощный синтаксис CMake систематически: генераторные выражения вычисляются не на…

Cmake

Кросс-компиляция и toolchain-файлы: сборка для другой платформы

Введение Embedded-цикл основного плана (статьи 351-360) разбирал STM32/bare-metal разработку, подразумевая сборку под архитектуру, отличную от той, на которой выполняется сама компиляция — в этой статье разберём механизм CMake,…

Cmake

Экспорт и установка пакетов: install(), CMake config-файлы для других проектов

Введение Статья 578 показала использование Config-режима find_package для готовых библиотек — в этой статье разберём, как создать такую готовую, «находимую» через find_package библиотеку самостоятельно: команду install() и генерацию…

Cmake

CTest и CPack: тестирование и упаковка через CMake-инфраструктуру

Введение Основной цикл статей про тестирование и DevOps-цикл (статьи 449, 451) разбирали тестирование и упаковку как отдельные задачи — CMake предоставляет встроенную инфраструктуру для обеих этих задач, интегрированную…

Cmake

Итоговый мини-проект: многомодульный Qt+OpenCV проект с современным CMake от нуля до установки

Введение В заключительной статье цикла CMake (и текущего общего объёма всего плана статей) собираем итоговый проект, объединяющий все темы цикла — многомодульная структура (с несколькими внутренними библиотеками), интеграция…

Cmake

Интеграция Boost в Qt-проект с использованием CMake

Архитектурная Ключевой принцип:никаких глобальных include_directories, только target-based linking. Структура проекта Пример использования Boost внутри Qt Будем использовать: FileService.h FileService.cpp MainWindow.h MainWindow.cpp main.cpp CMakeLists.txt (Qt6 + Boost) Что происходит…