CMake для проектов на C++ и Qt: структура CMakeLists.txt, подключение библиотек, сборка под разные платформы, типичные ошибки конфигурации. Примеры от минимального проекта до многомодульной сборки с тестами.
Подключение Qt Linguist (переводы) в CMake-сборку автоматически
Введение Локализация Qt-приложения строится вокруг трёх типов файлов: .ts (исходные файлы переводов в XML, редактируемые в Qt Linguist), .qm (скомпилированные бинарные файлы переводов, используемые в рантайме) и непосредственно…
Conan vs vcpkg: выбор пакетного менеджера для Qt-проекта
Введение Conan и vcpkg — два самых распространённых пакетных менеджера для C++ сегодня, оба интегрируются с CMake, оба решают задачу управления сторонними зависимостями, но имеют разную философию и…
Обзор CMake: философия, минимальный CMakeLists.txt, генераторы
Введение Основной цикл статей и цикл OpenCV (статья 561) уже использовали CMake без систематического разбора — настало время вернуться к самим основам и разобрать CMake как самостоятельную, мощную…
Цели (targets): add_executable, add_library, типы библиотек (STATIC/SHARED/INTERFACE)
Введение Статья 573 кратко создала цель через add_executable — в этой статье разберём концепцию целей (targets) систематически, включая add_library с тремя различающимися типами библиотек, лежащую в основе всего…
Видимость зависимостей: PUBLIC/PRIVATE/INTERFACE в target_link_libraries
Введение Статья 574 уже использовала PRIVATE в target_link_libraries без подробного объяснения — в этой статье разберём три ключевых спецификатора видимости (PUBLIC, PRIVATE, INTERFACE), определяющих, как именно настройки и…
Управление свойствами целей: target_include_directories, target_compile_definitions, target_compile_features
Введение Статья 575 разобрала видимость зависимостей между целями — в этой статье разберём аналогичную, но применённую к отдельным свойствам конкретной цели систему команд target_*: пути включения заголовков, макроопределения…
Переменные и кэш CMake: разница, scope, CACHE-переменные
Введение Статья 576 уже использовала переменные (CMAKE_CURRENT_SOURCE_DIR) без подробного разбора — в этой статье разберём систему переменных CMake систематически: обычные переменные с их областью видимости, и кэш-переменные, сохраняющиеся…
find_package: Module vs Config режимы, написание собственного Find-модуля
Введение Циклы Qt Multimedia, OpenCV (статья 561) и PySide6 неоднократно использовали find_package() для подключения внешних библиотек без подробного объяснения внутренней механики — в этой статье разберём два различающихся…