CMake для проектов на C++ и Qt: структура CMakeLists.txt, подключение библиотек, сборка под разные платформы, типичные ошибки конфигурации. Примеры от минимального проекта до многомодульной сборки с тестами.
CMake: организация многомодульного Qt-проекта (target_link_libraries, INTERFACE)
Введение По мере роста Qt-проекта единый монолитный CMakeLists.txt со всеми исходниками становится неудобен: компиляция замедляется, границы между подсистемами размываются, а повторное использование кода в других проектах требует копирования…
Подключение сторонних библиотек в Qt через FetchContent в CMake
Введение Раньше подключение сторонней библиотеки в C++-проект означало либо ручную установку через системный пакетный менеджер, либо копирование исходников в репозиторий (vendoring), либо submodule Git с дополнительной настройкой сборки.…
vcpkg + Qt + CMake: управление зависимостями C++-проекта
Введение vcpkg — пакетный менеджер C/C++ от Microsoft, который заметно упрощает установку и связывание сторонних библиотек с CMake-проектом: вместо ручной компиляции зависимостей из исходников или установки через системные…
Boost.Asio vs Qt Network: когда что выбрать
Введение И Boost.Asio, и Qt Network решают одну и ту же задачу — асинхронную сетевую работу — но делают это разными способами и в разных экосистемах. Если проект…
Сборка Qt-проекта под разные платформы с помощью CMake presets
Введение Конфигурация CMake-проекта под несколько целевых платформ (Windows MSVC, Linux GCC, macOS Clang, кросс-компиляция под embedded) исторически решалась через длинные команды с десятками флагов -D, которые передавались вручную…
CMake: настройка кросс-компиляции Qt-проекта под ARM
Введение Кросс-компиляция — сборка приложения на одной архитектуре (обычно x86_64) для запуска на другой (ARM, часто встречается в embedded Linux устройствах, Raspberry Pi, промышленных контроллерах) — требует toolchain-файла…
Boost.Optional, Boost.Variant и их аналоги в современном C++: нужен ли Boost вообще
Введение Долгое время Boost был фактическим «полигоном» для будущих возможностей стандартной библиотеки C++ — многие классы, такие как optional, variant, any, filesystem, появились в Boost задолго до их…
CMake install() и упаковка Qt-приложения для распространения
Введение Сборка приложения — только часть пути; для передачи его конечным пользователям нужно собрать дистрибутив: исполняемый файл, нужные библиотеки Qt и плагины (платформенные, форматов изображений, стилей), ресурсы. CMake…