Проект Qt с CMake

Автор: | 8 февраля, 2026

Настройка окружения

Перед началом убедитесь, что:

  1. Установлен Qt (желательно версии 5.15 или 6.x)
  2. Qt добавлен в переменную PATH или вы знаете путь к его установке
  3. Установлен CMake 3.16+ (для Qt6 лучше 3.21+)

Структура проекта

qt_hello_world/
    CMakeLists.txt
    main.cpp

Содержимое main.cpp:

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    
    QLabel *label = new QLabel("Hello, Qt with CMake!");
    label->setAlignment(Qt::AlignCenter);
    label->resize(400, 300);
    label->show();
    
    return app.exec();
}

CMakeLists.txt для Qt6 (современный подход)

# Для Qt6 требуется CMake 3.16+, для Qt6.3+ лучше 3.21+
cmake_minimum_required(VERSION 3.21)
project(QtHelloWorld VERSION 1.0.0 LANGUAGES CXX)

# Находим пакет Qt6. COMPONENTS указывает, какие модули нужны
# Core - базовые классы, Widgets - виджеты (QLabel, QWidget и т.д.)
find_package(Qt6 REQUIRED COMPONENTS Core Widgets)

# Включаем автоматическую работу с MOC, UIC, RCC
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTUIC ON)
set(CMAKE_AUTORCC ON)

# Создаем исполняемый файл
add_executable(${PROJECT_NAME}
    main.cpp
)

# Подключаем модули Qt к нашему таргету
# PUBLIC означает, что зависимости будут переданы другим таргетам,
# которые будут линковаться с этим
target_link_libraries(${PROJECT_NAME} PUBLIC
    Qt6::Core
    Qt6::Widgets
)

# Указываем стандарт C++ (Qt6 требует минимум C++17)
set_target_properties(${PROJECT_NAME} PROPERTIES
    CXX_STANDARD 17
    CXX_STANDARD_REQUIRED ON
)

CMakeLists.txt для Qt5 (если используете Qt5)

cmake_minimum_required(VERSION 3.16)
project(QtHelloWorld VERSION 1.0.0 LANGUAGES CXX)

# Для Qt5 используется Qt5_CONFIG
find_package(Qt5 REQUIRED COMPONENTS Core Widgets)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

add_executable(${PROJECT_NAME}
    main.cpp
)

target_link_libraries(${PROJECT_NAME} PUBLIC
    Qt5::Core
    Qt5::Widgets
)

set_target_properties(${PROJECT_NAME} PROPERTIES
    CXX_STANDARD 11  # Qt5 работает с C++11
    CXX_STANDARD_REQUIRED ON
)

Сборка проекта

# Создаем папку для сборки
mkdir build
cd build

# Конфигурируем проект. Указываем путь к Qt, если CMake не находит его автоматически
# Для Windows пример:
# cmake .. -DCMAKE_PREFIX_PATH="C:/Qt/6.5.0/msvc2019_64/lib/cmake"
# Для Linux часто путь указывать не нужно, если Qt установлен системно

cmake ..

# Собираем
cmake --build . --config Release  # или Debug

# Запускаем
./QtHelloWorld  # на Linux/Mac
# или QtHelloWorld.exe на Windows