🖥️

Старт проекта C++/Qt6. Настройка VS Code

01.10.2025 Qt

В этой статье мы рассмотрим, как настроить Visual Studio Code для комфортной разработки C++/Qt6 приложений с использованием CMake в качестве системы сборки.

Обзор конфигурации

Представленная конфигурация включает следующие ключевые файлы:

  • CMakeLists.txt — основной файл сборки CMake
  • CMakePresets.json — предустановки для CMake
  • c_cpp_properties.json — настройки C++ расширения
  • settings.json — общие настройки VSCode
  • launch.json — конфигурация отладки
  • extensions.json — рекомендуемые расширения

Установка необходимых расширений

{
    "recommendations": [
        "ms-vscode.cpptools",
        "ms-vscode.cmake-tools", 
        "twxs.cmake",
        "llvm-vs-code-extensions.vscode-clangd"
    ]
}

Эти расширения обеспечивают:

  • C/C++ — интеллектуальное завершение кода и навигация
  • CMake Tools — интеграция с CMake
  • CMake — подсветка синтаксиса для CMake
  • clangd — альтернативный language server для C++

Настройка CMake для Qt6

Основной CMakeLists.txt

cmake_minimum_required(VERSION 3.28)
project(qt-widgets-cmake)

# Автоматизация работы с Qt
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

# Настройка путей к Qt6
set(QT6_DIR "/opt/Qt6")
set(QT6_BASE_DIR "${QT6_DIR}/6.9.1")
set(CMAKE_PREFIX_PATH ${QT6_BASE_DIR})

# Поиск компонентов Qt6
find_package(Qt6 COMPONENTS Core Widgets REQUIRED)

# Создание исполняемого файла
add_executable(${PROJECT_NAME} ${SOURCES})

# Связывание с библиотеками Qt6
target_link_libraries(${PROJECT_NAME} PUBLIC
    Qt6::Core
    Qt6::Gui
    Qt6::Widgets
)

# Настройка стандарта C++17
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 17)

CMake Presets

Файл CMakePresets.json предоставляет готовые конфигурации сборки:

{
    "name": "debug",
    "description": "Debug build with Ninja",
    "binaryDir": "${sourceDir}/build-debug",
    "inherits": ["base-ninja", "base-debug"]
}

Доступные пресеты:

  • debug — отладочная сборка
  • release — релизная сборка
  • profile — сборка с отладочной информацией

Настройка C++ расширения

c_cpp_properties.json

{
    "configurations": [
        {
            "name": "qt6",
            "includePath": [
                "${workspaceFolder}/**",
                "${QTDIR}include/**"
            ],
            "cppStandard": "c++20",
            "configurationProvider": "ms-vscode.cmake-tools"
        }
    ]
}

settings.json

{
    "C_Cpp.intelliSenseEngine": "disabled",
    "cmake.copyCompileCommands": "${workspaceFolder}/compile_commands.json",
    "clangd.arguments": ["-header-insertion=never"],
    "files.trimTrailingWhitespace": true,
    "editor.formatOnSave": true
}

Важно: Мы отключаем встроенный IntelliSense в пользу clangd, который лучше работает с CMake.

Настройка отладки

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug Qt6 App (Linux)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build-debug/bin/qt-widgets-cmake",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

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

project-root/
├── src/
│   ├── main.cpp
│   └── widgets/
│       ├── mywidget.h
│       ├── mywidget.cpp
│       └── widget.ui
├── CMakeLists.txt
├── CMakePresets.json
├── .vscode/
│   ├── c_cpp_properties.json
│   ├── settings.json
│   ├── launch.json
│   └── extensions.json
└── build-debug/
    └── bin/
        └── qt-widgets-cmake

Готовый репозиторий

Вы можете не вникать в подробности настройки подобного проекта, а просто клонировать готовый шаблон из репозитория нашего проекта по ссылке ниже. Не забудьте клонировать по http!

https://gitlab.scoreproject.ru/tools/qt6-templete

Для работы данного шаблона важно разместить собранный Qt6 в папке /opt/Qt6.

Последние статьи

📄

Профилирование памяти в С++

Проблема стабильности программного обеспечения В процессе разработки и эксплуатации программного обеспечения на языке C++ нередко возникают ситуации, требующие детального анализа…

04.10.2025 CXX