Архив рубрики: 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) Что происходит на уровне CMake Qt6::Widgets Boost::filesystem Это и есть target-based dependency graph. Интеграция через vcpkg Установка: Сборка: CMakeLists.txt не меняется. Преимущество: Boost + Qt Signals/Slots Boost не конфликтует… Читать далее »

CMake и библиотека Boost: интеграция в C++-проект

Введение Boost — одна из наиболее масштабных и зрелых библиотек для C++, предоставляющая компоненты от метапрограммирования и многопоточности до сетевого взаимодействия и сериализации. Многие части Boost легли в основу стандартной библиотеки C++ (smart pointers, filesystem, thread, chrono и др.). CMake — де-факто стандарт для кроссплатформенной сборки C++-проектов. Современная модель CMake (target-based approach) позволяет корректно описывать… Читать далее »

CMake + CUDA

Как CMake работает с CUDA С версии 3.18 CMake имеет нативную поддержку CUDA: Минимальный CUDA-проект Compute Capability Или: Статическая CUDA-библиотека CUDA + Qt Qt UI + GPU backend: gpu_backend: app: Включение NVCC flags Debugging CUDA CUDA + Tests Cross-platform GPU backend Абстракция: CUDA-реализация — плагин. CI для CUDA GitHub Actions:

Архитектура Qt-приложений + CMake

Цели архитектуры Qt-проекта Хороший Qt-проект: CMake здесь — не просто билд-система, а средство описания архитектуры. Слоистая структура (Layered Architecture) Типовая схема: Каждый слой — отдельная библиотека. Модульность через targets Root: domain/CMakeLists.txt: ui: app: Dependency Rule Domain не знает о Qt Widgets. Допустимо: Недопустимо: MVVM / MVP в Qt Qt легко реализует MVVM: ViewModel — библиотека:… Читать далее »

Проект Qt с CMake

Настройка окружения Перед началом убедитесь, что: Структура проекта Содержимое main.cpp: CMakeLists.txt для Qt6 (современный подход) CMakeLists.txt для Qt5 (если используете Qt5) Сборка проекта

Cmake полезные команды и переменные для начинающих

Часто используемые команды message() — аналог printf для отладки. set() — задать переменную list() — работать со списками if() / else() / endif() — условные операторы Полезные встроенные переменные CMAKE_BUILD_TYPE — тип сборки (Debug, Release, RelWithDebInfo, MinSizeRel). По умолчанию не задан. CMAKE_CXX_STANDARD — стандарт C++ (11, 14, 17, 20) Советы по организации Вывод: Освоив базовый синтаксис, команды и переменные, вы сможете читать и писать… Читать далее »

Cmake используем внешние библиотеки (на примере OpenSSL)

Часто требуется использовать сторонние библиотеки. CMake умеет их искать. Способ 1: find_package() (предпочтительный, если пакет поддерживает CMake) Многие библиотеки поставляются с CMake-файлами поиска. Предположим, нам нужен OpenSSL для хеширования. Упрощенный CMakeLists.txt: Содержимое src/main.cpp (упрощенно): Способ 2: pkg-config (популярно в Linux/Unix) Если find_package не сработал, можно использовать pkg-config. Что делать, если библиотека не найдена? Вывод: Использование внешних библиотек через find_package или pkg_check_modules — стандартный и чистый способ. CMake берет на себя… Читать далее »

Руководство по основным командам CMake

Что такое CMake CMake — это мета-система сборки (build system generator), которая не компилирует код напрямую, а генерирует файлы для нативных систем сборки (Makefile, Visual Studio проекты, Xcode проекты и т.д.). Основная философия CMake — написать один раз, собирать везде. CMake использует декларативный язык, где вы описываете что нужно собрать, а не как это делать. Это делает скрипты кроссплатформенными и легко поддерживаемыми.… Читать далее »