В этой статье мы рассмотрим, как настроить 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.
Последние статьи
Инструменты разработчика С++/ Qt. Clang-Tidy, Clang-Format в VSCode
В продолжение темы настройки IDE из статьи про Qt6, мы углубимся в инструменты, которые превращают хорошего разработчика в отличного. Речь…
Профилирование памяти в С++
Проблема стабильности программного обеспечения В процессе разработки и эксплуатации программного обеспечения на языке C++ нередко возникают ситуации, требующие детального анализа…
Руководство по созданию и установке отладочных символов в DEB пакетах
Отладочные символы — это критически важный компонент для эффективной отладки программного обеспечения. Они связывают исполняемый код с исходным кодом, позволяя…