Среда, 13.08.2025 19:00

Настройка VSCode для сборки проектов Qt6 и работы с ними

Настройка VSCode для сборки проектов Qt6 и работы с ними

VSCode удобная, не требовательная к ресурсам и, главное гибко настраиваемая среда разработки. Она может быть использована и для разработки ПО с использованием Фреймворка Qt6. В какой-то мере, некоторыми функциями проще пользоваться в QtCreator, но они нужны не так часто и не всем. 

Всё больше разработчиков переходят от использования QWidgets на QtQuick, для таких разработчиков VSCode будет не менее удобен чем QtCreator. Учитывая гибкие возможности для настройки и наличие большого числа расширений, работа с VSCode может быть более удобной и приятной!

Сегодня мы рассмотрим настройку VsCode для использования фреймворка Qt6 собранного в статье - https://blog.altuninvv.ru/qt/qt6/установка-qt6-из-исходного-кода-в-windows-c-использованием-vcpkg-и-msys2.

Для чистоты эксперимента мы будем работать с виртуальной машиной Hyper-V с только что установленным Windows 10 22H2.

Обновления и Defender отключены чтобы не мешать тестированию.

Перенос собранной версии Qt6 на другой ПК

Скопируйте с виртуальной машины на которой производилась сборка Qt6, любым удобным вам способом папку:

D:\tools\vcpkg\installed\x64-mingw-dynamic

Чтобы не возникло проблем я скопирую её в корень диска c:\

Переименуем папку:

cd c:\
move c:\x64-mingw-dynamic c:\qt6

Пропишем путь до нужных папок. Запустим PowerShell с правами администратора и в консоли запустим:

[Environment]::SetEnvironmentVariable("Path", $env:Path + ";c:\qt6\debug\bin;c:\qt6\bin;C:\msys64\usr\bin;C:\msys64\mingw64\bin;c:\qt6\tools\Qt6\bin", [EnvironmentVariableTarget]::Machine)

Закроем окна с консолями PowerShell и cmd

Запустим cmd, проверим:

path

Результат:

PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Users\user\AppData\Local\Microsoft\WindowsApps;c:\qt6\debug\bin;c:\qt6\bin;C:\msys64\usr\bin;C:\msys64\mingw64\bin;c:\qt6\tools\Qt6\bin;C:\Users\user\AppData\Local\Microsoft\WindowsApps;

Наши папки успешно были добавлены в переменную Path.

Обратите внимание! Если вы производите настройку на уже настроенном ПК, убедитесь, чтобы добавленные пути в списке были как можно выше и их порядок тоже очень важен! 

Из cmd проверим, как запускается qmake6

Запуск будет неудачен:

Изображение удалено.

Несмотря на то, что мы собрали Qt6, для его работы требуются библиотеки STD C++, которые поставляются с компилятором GCC. Их установку мы произведем с помощью Msys2!

Установка Msys2 для разработки с помощью Qt6 и VSCode

Установку Msys2 я уже рассматривал в этой статье - https://blog.altuninvv.ru/qt/qt6/установка-qt-660-с-помощью-msys2-в-windows-10

Просто следуйте инструкциям до раздела - Установка пакетов Qt6.

Обратите внимание! Устанавливать в Msys2 пакеты для Qt6 НЕ НУЖНО!

Через консоль Msys2 установим нужные пакеты:

pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja 

Проверим:

qmake6 -v

Результат:

QMake version 3.1
Using Qt version 6.8.3 in C:/qt6/lib

Все необходимые библиотеки установлены.

Чтобы точно быть уверенными, что всё установилось, запустим Qt Widgets Designer.

Из cmd запустим:

designer

Результат:

Изображение удалено.

Программа успешно запущена!

Установка VSCode

Загрузим установщик VSCode:

cd %USERPROFILE%\Downloads
curl -L "https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user" --output vscode_setup.exe

Запустим установку:

.\vscode_setup.exe

Просто нажимаем «Далее» и ждем, пока всё не установится.

После окончания копирования файлов снимем галочку и нажмем «Завершить».

Закроем все запущенные консоли cmd.

Создаем папку для проектов

Создадим папку для проектов, чтобы содержать файловую систему в чистоте:

В консоли cmd запустим:

mkdir c:\projects

Перейдем в папку и запустим:

cd c:\projects
code .

Будет запущен редактор:

Изображение удалено.

Нажмем

Yes, I trust the authors

Закроем вкладку:

Walkthrough: Setup VS Code

Редактор готов к настройке.

Создаем профиль VSCode для Qt6

Чтобы не сваливать всё в VSCode существуют профили. Каждый профиль хранит свою копию настроек и расширений. Поэтому расширения и настройки для работы с C++ не будут занимать лишнее место в оперативной памяти и зря тратить ресурсы процессора, при работе с проектами на PHP.

Для работы с Qt6 создадим отдельный профиль.

Нажмем F1 и введем profile

Изображение удалено.

Выберем:

Preferences: Open Profiles (UI)

Откроется окно с профилями.

Изображение удалено.

Нажмем New Profile

Изображение удалено.

В поле Name

Введем:

Qt6

Во всех остальных полях оставим None

Изображение удалено.

Нажмем Create

Выберем пункт Qt6 и нажмем на галочку, чтобы сделать профиль активным:

Изображение удалено.

Если вы хотите вернуться к предыдущим настройкам, просто выбейте профиль Default или любой другой.

Установка расширений для работы с QT6

Для работы с Qt6 нам потребуется несколько расширений.

Нажмем Ctrl+Shif+X 

Откроется панель расширений:

Изображение удалено.

В строке поиска введем Qt

Изображение удалено.

Выберем Qt Extension Pack

От автора: Qt Group qt.io

Изображение удалено.

Нажмем Install 

На запрос:

Изображение удалено.

Ответим Trust Publisher & Install

Дождемся окончания установки всех расширений

Изображение удалено.

Очистим фильтр расширений, для этого нажмем на кнопку, результаты поиска будут очищены и откроется список установленных расширений:

Изображение удалено.

Все необходимые расширения установлены.

Закроем все окна VSCode.

Проверяем доступность CMake и Ninja

Откроем консоль VSCode нажав Ctrl+~ и введем команды

ninja
cmake –version

Результат:

ninja: error: loading 'build.ninja': The system cannot find the file specified.
cmake version 4.1.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).

Нужные для сборки программы установлены.

Подготовка к созданию проекта

Ранее мы установили расширения для Qt. Одно из них позволяет создавать новые пустые проекты с помощью утилиты qtcli.exe давайте скопируем ее в папку с нашим Qt6.

Проверим версию расширения

Из cmd запустим:

dir C:\Users\user\.vscode\extensions\theqtcompany.qt-core-*

Результат

Содержимое папки C:\Users\user\.vscode\extensions
12.08.2025  19:20    <DIR>          theqtcompany.qt-core-1.6.0
               0 файлов              0 байт
               1 папок  126 597 955 584 байт свободно

На момент написания статьи версия 1.6.0

Используя полученную информацию скопируем файл в папку Qt6:

xcopy C:\Users\user\.vscode\extensions\theqtcompany.qt-core-1.6.0\res\qtcli\qtcli-windows-amd64-1.6.0\qtcli.exe c:\Qt6\bin\

Обратите внимание, после выхода новых версий путь до файла может измениться!

Запустим новую консоль cmd, проверим:

qtcli

Результат:

A CLI for creating Qt project and files
Usage:
  qtcli [flags]
  qtcli [command]
Available Commands:
  completion  Generate the autocompletion script for the specified shell
  help        Help about any command
  new         Create a new project under the current directory
  new-file    Create a new file in the current directory
  preset      Inspect and manage presets
  server      Start or stop a rest server
  test        Test specific features
Flags:
  -h, --help      help for qtcli
  -v, --verbose   Enable verbose output
      --version   version for qtcli
Use "qtcli [command] --help" for more information about a command.

Создаем тестовый проект

Чтобы настроить расширения для Cmake и Qt6 нам нужно создать простой проект на Qt6.

Откроем консоль cmd

Перейдем в папку наших проектов:

cd c:\projects

Введем:

qtcli new testqt1
? Pick a preset
  → [Default] @projects/cpp/console
    [Default] @projects/cpp/qtquick
    [Default] @projects/cpp/qwidget
    [Manually select features]

Выберем   

→ [Default] @projects/cpp/qtquick

Нажмем Enter

✔ Pick a preset [Default] @projects/cpp/qtquick

В текущей папке будет создана папка testqt1

dir .
Содержимое папки c:\projects
12.08.2025  19:37    <DIR>          .
12.08.2025  19:37    <DIR>          ..
12.08.2025  19:37    <DIR>          testqt1
               0 файлов              0 байт
               3 папок  126 627 074 048 байт свободно

Открываем проект в VsCode

В консоли cmd перейдем в папку с проектом:

cd c:\projects\testqt1

Запустим:

code .

Результат:

Изображение удалено.

Если мы сейчас откроем панель расширений, то обнаружим что все наши расширения пропали.

На самом деле, они никуда не пропали, просто нам нужно выбрать профиль для проекта, это потребуется делать для каждого создаваемого проекта при первом открытии.

Нажмем F1 и введем profile

Выберем Preferences: Open Profiles (UI)

Откроется окно с профилями.

Активируем профиль Qt6

Появится иконка панели CMake и окно с выбором комплекта

Изображение удалено.

Выберем

GCC 15.2.0 x86_64-w64-mingw32

Закроем вкладку Profiles и откроем панель CMake

Изображение удалено.

Выделим пункт Configure – [No Kit Selected]

Нажмем на кнопку редактирования:

Изображение удалено.

Снова выберем набор

GCC 15.2.0 x86_64-w64-mingw32

Будет запущено конфигурирование проекта. Дождитесь окончания процесса:

[cmake] -- Configuring done (36.4s)
[cmake] -- Generating done (1.4s)
[cmake] -- Build files have been written to: C:/projects/testqt1/build
Вывод команды будет таким:
[proc] Executing command: C:\msys64\mingw64\bin\cmake.EXE --version
[proc] Executing command: C:\msys64\mingw64\bin\cmake.EXE -E capabilities
[variant] Loaded new set of variants
[kit] Detected kits definition version change from undefined to 2. Silently scanning for kits.
[proc] Executing command: C:\msys64\mingw64\bin\gcc.exe -v
[proc] Executing command: C:\msys64\mingw64\bin\x86_64-w64-mingw32-gcc-15.2.0.exe -v
[proc] Executing command: C:\msys64\mingw64\bin\x86_64-w64-mingw32-gcc.exe -v
[proc] Executing command: C:\msys64\mingw64\bin\x86_64-w64-mingw32-gcc.exe -v
[kit] Found Kit (trusted): GCC 15.2.0 x86_64-w64-mingw32 (mingw64)
[kit] Found Kit (trusted): GCC 15.2.0 x86_64-w64-mingw32 (mingw64)
[kit] Found Kit (trusted): GCC 15.2.0 x86_64-w64-mingw32 (mingw64)
[proc] Executing command: C:\msys64\mingw64\bin\gcc.exe -v
[main] Configuring project: testqt1 
[proc] Executing command: C:\msys64\mingw64\bin\cmake.EXE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=C:\msys64\mingw64\bin\gcc.exe -DCMAKE_CXX_COMPILER:FILEPATH=C:\msys64\mingw64\bin\g++.exe --no-warn-unused-cli -S C:/projects/testqt1 -B c:/projects/testqt1/build -G Ninja
[cmake] Not searching for unused variables given on the command line.
[cmake] -- The CXX compiler identification is GNU 15.2.0
[cmake] -- Detecting CXX compiler ABI info
[cmake] -- Detecting CXX compiler ABI info - done
[cmake] -- Check for working CXX compiler: C:/msys64/mingw64/bin/g++.exe - skipped
[cmake] -- Detecting CXX compile features
[cmake] -- Detecting CXX compile features - done
[cmake] -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
[cmake] -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
[cmake] -- Found Threads: TRUE
[cmake] -- Performing Test HAVE_STDATOMIC
[cmake] -- Performing Test HAVE_STDATOMIC - Success
[cmake] -- Found WrapAtomic: TRUE
[cmake] CMake Warning (dev) at C:/qt6/share/Qt6Core/Qt6CoreMacros.cmake:3411 (message):
[cmake]   Qt policy QTP0001 is not set: ':/qt/qml/' is the default resource prefix
[cmake]   for QML modules.  Check https://doc.qt.io/qt-6/qt-cmake-policy-qtp0001.html
[cmake]   for policy details.  Use the qt_policy command to set the policy and
[cmake]   suppress this warning.
[cmake] 
[cmake] Call Stack (most recent call first):
[cmake]   C:/qt6/share/Qt6Qml/Qt6QmlMacros.cmake:719 (__qt_internal_setup_policy)
[cmake]   C:/qt6/share/Qt6Qml/Qt6QmlMacros.cmake:1254 (qt6_add_qml_module)
[cmake]   CMakeLists.txt:15 (qt_add_qml_module)
[cmake] This warning is for project developers.  Use -Wno-dev to suppress it.
[cmake] 
[cmake] -- Configuring done (36.4s)
[cmake] -- Generating done (1.4s)
[cmake] -- Build files have been written to: C:/projects/testqt1/build

Выберем пункт Build и нажмем на кнопку сборки:

Изображение удалено.

Будет запущена сборка проекта, во вкладке Output мы увидим:

[main] Building folder: c:/projects/testqt1/build 
[build] Starting build
[proc] Executing command: chcp
[proc] Executing command: C:\msys64\mingw64\bin\cmake.EXE --build c:/projects/testqt1/build --config Debug --target all --
[build] [3/19   5% :: 0.356] Copying apptestqt1 qml resources into build dir
[build] [3/19  10% :: 0.358] Copying apptestqt1 qml sources into build dir
[build] [3/19  15% :: 0.940] Running qmlimportscanner for apptestqt1
[build] [4/19  21% :: 1.623] Automatic MOC and UIC for target apptestqt1
[build] [8/19  26% :: 2.111] Running rcc for resource qmake_testqt1
[build] [8/19  31% :: 2.134] Generating .rcc/qmlcache/apptestqt1_qmlcache_loader.cpp
[build] [8/19  36% :: 2.137] Running rcc for resource apptestqt1_raw_qml_0
[build] [8/19  42% :: 2.443] Running AUTOMOC file extraction for target apptestqt1
[build] [9/19  47% :: 2.654] Running moc --collect-json for target apptestqt1
[build] [10/19  52% :: 3.823] Automatic QML type registration for target apptestqt1
[build] [11/19  57% :: 4.725] Generating .rcc/qmlcache/apptestqt1_Main_qml.cpp, .rcc/qmlcache/apptestqt1_Main_qml.cpp.aotstats
[build] [18/19  63% :: 5.288] Building CXX object CMakeFiles/apptestqt1.dir/build/.qt/rcc/qrc_apptestqt1_raw_qml_0.cpp.obj
[build] [18/19  68% :: 5.418] Building CXX object CMakeFiles/apptestqt1.dir/apptestqt1_autogen/mocs_compilation.cpp.obj
[build] [18/19  73% :: 5.465] Building CXX object CMakeFiles/apptestqt1.dir/build/.qt/rcc/qrc_qmake_testqt1.cpp.obj
[build] [18/19  78% :: 17.189] Building CXX object CMakeFiles/apptestqt1.dir/apptestqt1_qmltyperegistrations.cpp.obj
[build] [18/19  84% :: 17.398] Building CXX object CMakeFiles/apptestqt1.dir/build/.rcc/qmlcache/apptestqt1_Main_qml.cpp.obj
[build] [18/19  89% :: 17.890] Building CXX object CMakeFiles/apptestqt1.dir/main.cpp.obj
[build] [18/19  94% :: 19.423] Building CXX object CMakeFiles/apptestqt1.dir/build/.rcc/qmlcache/apptestqt1_qmlcache_loader.cpp.obj
[build] [19/19 100% :: 20.763] Linking CXX executable apptestqt1.exe
[driver] Build completed: 00:00:21.125
[build] Build finished with exit code 0

Строка 

[build] Build finished with exit code 0

Означает что сборка завершилась успешно.

Запустим проект, выберем пункт Launch и нажмём на кнопку запуска в виде треугольника:

Изображение удалено.

Выберем apptestqt1

И откроется окно нашей запущенной программы:

Изображение удалено.Мы успешно завершили базовую настройку VSCode для работы и сборки проектов Qt6.

В следующей статье мы рассмотрим настройку VSCode для запуска проектов Qt6  в режиме отладки.

Заключение

Сегодня мы рассмотрели настройку VSCode для работы и сборки проектов Qt6:

Перенесли собранный Qt6 на другой ПК;

Установили GCC, CMake, Ninga с помощью Msys2;

Загрузили и установили VSCode;

Создали папку для проектов;

Создали профиль VSCode для Qt6;

Установили расширения необходимые для работы с Qt6;

Проверили доступность CMake и Ninja из консоли VSCode;

Скопировали утилиту для создания пустых проектов в папку Qt6;

Создали пустой проект Qt Quick;

Открыли проект в VSCode;

Активировали для него профиль Qt6;

Собрали и запустили проект из VSCode.

Категория Visual Studio Code
Теги vscode Qt Qt6 Cpp

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
Просмотров: 1307