Здравствуйте, товарищи программисты и все кто им сочувствует. Я хотел бы предложить обзор возможностей редактора Visual Studio Code в связке с системой сборки QBS. Кому эта тема интересна, добро пожаловать по кат.
Примечание: Напомню, что QBS разрабатывалась компанией Qt Company, которая в дальнейшем отказалась от разработки данного продукта и отдала его на откуп сообществу. На данный момент QBS активно развивается и выходят новые релизы. Это я на тот случай, чтобы не было «глупых» комментариев на этот счет. Так сказать, расставляю точки над И.
До недавнего времени система сборки QBS поддерживалась только в IDE QtCreator.
Но теперь есть возможность использования этой замечательной системы сборки (описывать, почему она замечательная я здесь не буду) с открытым редактором исходного кода Visual Studio Code.
Буквально, чуть больше месяца назад ребята из QBS-community подкинули идейку: «а почему бы собственно, не создать плагин для Visual Studio Code?». Хмм, действительно, сама Visual Studio Code имеет широкое распространение среди определенной части человечества, да и QBS имеет специально разработанное JSON подобное API для упрощения интеграции с любыми IDE. И… работа закипела.
В результате этой работы на свет появилось расширение QBS для Visual Studio Code, которое уже имеет следующие возможности:
Примечание: На данный момент это расширение еще не опубликовано в маркете Visual Studio Code, т.к. еще необходимо некоторое время для доработки.
Итак, давайте подробнее разберем, как же использовать данное расширение.
Здесь описывается базовый процесс установки QBS и Visual Studio Code.
Теперь необходимо настроить установленное расширение для работы QBS. Для этого нужно открыть настройки этого расширения, выбрав «File -> Preferences -> Extensions». Далее выбрать«QBS», нажать на кнопочку «Manage» и выбрать пункт «Extension Settings».
Чтобы открыть проект, необходимо выбрать директорию в которой находится файл проекта *.qbs. Для этого нужно выбрать «File -> Open Folder» и выбрать желаемую директорию.
Примечание: Кажется, это такая особенность данного редактора.
После того как директория будет выбрана, автоматически активируется QBS расширение и запустит QBS сессию. Текущий статус сессии будет отображаться внизу на кнопке «QBS: started» панели инструментов редактора:
Далее, расширение перечислит все имеющиеся файлы проектов *.qbs в данной директории и установит первый попавшийся проект как проект по умолчанию. Имя файла текущего активного проекта будет отображаться внизу на соответствующей кнопке панели инструментов редактора:
Примечание: Пользователь может кликнуть на эту кнопку и в выпадающем списке выбрать другой файл проекта из этой директории.
Далее, расширение установит по умолчанию первый попавшийся профиль, конфигурацию сборки установит в debug, и запустит автоматическое сканирование проекта для построения графа сборки.
Процесс выполнения сканирования (прогресс в процентах) будет отображаться во всплывающем уведомлени в нижней правой части экрана:
Примечание: Все прогрессы таких операций как сканирование, сборка, очистка будут отображаться в этих всплывающих сообщениях.
Кроме того, расширение создает два «выходных» окна для просмотра текущих сообщений:
После того, как сканирование проекта успешно завершится, то можно переключится на дерево проекта, предоставляемого расширением. Для чего необходимо нажать на кнопку «QBS» на левой панели редактора:
Примечание: В этом случае, дерево проекта отображает все под-проекты, продукты, группы и артифакты, предоставляемые QBS после сканирования проекта.
Примечание: Редактор также отображает и полную директорию проекта после его открытия, но это не то дерево, которое предоставляется данным расширением, это встроенная функция самого редактора.
Для сборки проекта необходимо выбрать нужный профиль, конфигурацию и продукт для сборки.
Для запуска самой сборки пользователь может нажать на кнопку «Build» внизу на панели инструментов редактора:
Примечание: Процесс сборки будет отображаться как в выпадающем уведомлении, так и в «выходном» окне сообщений.
Чтобы запустить или отладить продукт, его необходимо сначала выбрать. Для этого нужно нажать на соответствующую кнопку внизу на панели инструментов редактора и выбрать нужный продукт из списка доступных:
При этом, если продукт уже скомпилирован и его исполняемый файл существует, то кнопки «Run» и «Debug» закрасятся зеленым цветом:
Кроме того, при наведении на запускаемый продукт отобразится всплывающая подсказка, содержащая полный путь к исполняемому файлу продукта:
Для запуска продукта достаточно нажать на кнопку «Run» внизу на панели инструментов редактора:
Продукт будет запущен в терминале «QBS Run», в который будут выведены все отладочные сообщения работающего приложения:
Перед отладкой продукта необходимо создать конфигурацию отладчика, которая должна храниться в файле launch.json.
Примечание: Подробнее о формате этого файла можно ознакомиться в оффициальной документации редактора.
По умолчанию текущее QBS расширение ожидает этот файл в директории .vscode/ в корне открытого проекта. Но этот путь к файлу launch.json может быть изменен пользователем в настройках плагина.
Например, при использовании отладчика из MSVC, этот файл может иметь такое содержимое:
Примечание: Свойство externalConsole должно быть установлено в false если мы хотим видеть отладочные сообщения приложения в окне отладчика.
Примечание: Этот файл может иметь несколько конфигураций для одного и того же, или разных отладчиков (таких как MSVC, GDB, LLDB).
После того как файл launch.json создан и скопирован в нужное место, нужно выбрать нужный отладчик из списка, нажав на соответствую кнопку внизу справа на на панели инструментов редактора:
Теперь можно устанавливать точку останова в исходном коде выбранного продукта и нажимать на кнопку «Debug» внизу на панели инструментов редактора:
После этого можно наслаждаться отладкой:
Конечно, в данном обзоре не раскрыты некоторые другие моменты работы с редактором (например, работа через команды), а также не дано пояснение для опций настройки QBS. Подробнее ознакомиться об этом можно, прочитав документацию, идущую в комплекте с расширением и/или документацию по QBS:
В заключение хочу сказать большое спасибо всем кто помогал мне тестировать это расширение, предлагал новые идеи.
Также, настоятельная просьба все ошибки, пожелания, исправления слать на баг-трекер.
Примечание: Напомню, что QBS разрабатывалась компанией Qt Company, которая в дальнейшем отказалась от разработки данного продукта и отдала его на откуп сообществу. На данный момент QBS активно развивается и выходят новые релизы. Это я на тот случай, чтобы не было «глупых» комментариев на этот счет. Так сказать, расставляю точки над И.
До недавнего времени система сборки QBS поддерживалась только в IDE QtCreator.
Но теперь есть возможность использования этой замечательной системы сборки (описывать, почему она замечательная я здесь не буду) с открытым редактором исходного кода Visual Studio Code.
Буквально, чуть больше месяца назад ребята из QBS-community подкинули идейку: «а почему бы собственно, не создать плагин для Visual Studio Code?». Хмм, действительно, сама Visual Studio Code имеет широкое распространение среди определенной части человечества, да и QBS имеет специально разработанное JSON подобное API для упрощения интеграции с любыми IDE. И… работа закипела.
В результате этой работы на свет появилось расширение QBS для Visual Studio Code, которое уже имеет следующие возможности:
- Открыть директорию с файлами проектов.
- Выбрать нужный проект для сборки (если в директории несколько файлов).
- Выбрать профиль для сборки (аналог комплекта с компиляторами).
- Выбрать конфигурацию сборки (debug/release).
- Выбрать конкретный продукт для сборки (или все продукты).
- Выбрать конкретный продукт для запуска в терминале.
- Выбрать конкретный продукт для его отладки.
- Работает автоматическая «интеллектуальная» подсветка C/C++ кода.
- Работает базовая подсветка для файлов *.qbs.
- Строится дерево проекта со всеми артефактами.
Примечание: На данный момент это расширение еще не опубликовано в маркете Visual Studio Code, т.к. еще необходимо некоторое время для доработки.
Итак, давайте подробнее разберем, как же использовать данное расширение.
Установка зависимостей
Здесь описывается базовый процесс установки QBS и Visual Studio Code.
- Для начала необходимо скачать или установить сам QBS версии 1.16 или выше. Для этого можно воспользоваться официальным хранилищем, или установить его из репозиториев.
Примечание: Я не буду здесь описывать процесс установки QBS.
- Далее, необходимо настроить профили, которыми QBS будет компилировать проекты. Как это делать, подробно описано в документации.
Для быстрой настройки можно попросить QBS автоматически определить все установленные компиляторы и создать профили:
qbs setup-toolchains --detect
и потом посмотреть что получилось используя UI утилиту config-ui, или сделать все из командной строки:
qbs config --list profiles
Примечание: Возможно, перед этим нужно задать путь к желаемому компилятору в переменной окружения PATH.
- Далее, необходимо скачать последнее QBS расширение отсюда.
Примечание: Это файл с расширением *.vsix
- Далее, необходимо установить редактор Visual Studio Code, запустить его и установить скачанное ранее QBS расширение, набрав комбинацию клавиш ctrl+ shift + p и в выпадающем меню выбрав пункт «Extensions: Install from VSIX...» указав путь к *.vsix файлу.
Подготовка к работе
Теперь необходимо настроить установленное расширение для работы QBS. Для этого нужно открыть настройки этого расширения, выбрав «File -> Preferences -> Extensions». Далее выбрать«QBS», нажать на кнопочку «Manage» и выбрать пункт «Extension Settings».
- Далее, необходимо указать путь к исполняемому файлу QBS в поле «QBS Path», например:
Примечание: В качестве разделителей пути надо использовать прямую черту /.
- Остальные параметры можно на данный момент оставить «как есть».
Открытие проекта
Чтобы открыть проект, необходимо выбрать директорию в которой находится файл проекта *.qbs. Для этого нужно выбрать «File -> Open Folder» и выбрать желаемую директорию.
Примечание: Кажется, это такая особенность данного редактора.
После того как директория будет выбрана, автоматически активируется QBS расширение и запустит QBS сессию. Текущий статус сессии будет отображаться внизу на кнопке «QBS: started» панели инструментов редактора:
Далее, расширение перечислит все имеющиеся файлы проектов *.qbs в данной директории и установит первый попавшийся проект как проект по умолчанию. Имя файла текущего активного проекта будет отображаться внизу на соответствующей кнопке панели инструментов редактора:
Примечание: Пользователь может кликнуть на эту кнопку и в выпадающем списке выбрать другой файл проекта из этой директории.
Далее, расширение установит по умолчанию первый попавшийся профиль, конфигурацию сборки установит в debug, и запустит автоматическое сканирование проекта для построения графа сборки.
Процесс выполнения сканирования (прогресс в процентах) будет отображаться во всплывающем уведомлени в нижней правой части экрана:
Примечание: Все прогрессы таких операций как сканирование, сборка, очистка будут отображаться в этих всплывающих сообщениях.
Кроме того, расширение создает два «выходных» окна для просмотра текущих сообщений:
- QBS Compile Output — отображает сообщения от основных операций сканирования, сборки и очистки:
- QBS Message Output — отображает «сервисные» сообщения (например из JS кода от модулей QBS):
После того, как сканирование проекта успешно завершится, то можно переключится на дерево проекта, предоставляемого расширением. Для чего необходимо нажать на кнопку «QBS» на левой панели редактора:
Примечание: В этом случае, дерево проекта отображает все под-проекты, продукты, группы и артифакты, предоставляемые QBS после сканирования проекта.
Примечание: Редактор также отображает и полную директорию проекта после его открытия, но это не то дерево, которое предоставляется данным расширением, это встроенная функция самого редактора.
Сборка проекта
Для сборки проекта необходимо выбрать нужный профиль, конфигурацию и продукт для сборки.
- Выбор профиля сводится к нажатию соответствующей кнопки внизу на панели инструментов редактора и выбору нужного пункта из списка доступных профилей:
- Выбор конфигурации сводится к нажатию соответствующей кнопки внизу на панели инструментов редактора и выбору нужного пункта из списка доступных конфигураций:
- Выбор продукта сводится к нажатию соответствующей кнопки внизу на панели инструментов редактора и выбору нужного пункта из списка доступных продуктов:
Примечание: Пользователь может выбрать [all] для сборки всех продуктов в проекте.
Для запуска самой сборки пользователь может нажать на кнопку «Build» внизу на панели инструментов редактора:
Примечание: Процесс сборки будет отображаться как в выпадающем уведомлении, так и в «выходном» окне сообщений.
Выбор продукта для запуска или отладки
Чтобы запустить или отладить продукт, его необходимо сначала выбрать. Для этого нужно нажать на соответствующую кнопку внизу на панели инструментов редактора и выбрать нужный продукт из списка доступных:
При этом, если продукт уже скомпилирован и его исполняемый файл существует, то кнопки «Run» и «Debug» закрасятся зеленым цветом:
Кроме того, при наведении на запускаемый продукт отобразится всплывающая подсказка, содержащая полный путь к исполняемому файлу продукта:
Запуск выбранного продукта
Для запуска продукта достаточно нажать на кнопку «Run» внизу на панели инструментов редактора:
Продукт будет запущен в терминале «QBS Run», в который будут выведены все отладочные сообщения работающего приложения:
Отладка выбранного продукта
Перед отладкой продукта необходимо создать конфигурацию отладчика, которая должна храниться в файле launch.json.
Примечание: Подробнее о формате этого файла можно ознакомиться в оффициальной документации редактора.
По умолчанию текущее QBS расширение ожидает этот файл в директории .vscode/ в корне открытого проекта. Но этот путь к файлу launch.json может быть изменен пользователем в настройках плагина.
Например, при использовании отладчика из MSVC, этот файл может иметь такое содержимое:
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Debugger (Windows)",
"type": "cppvsdbg",
"request": "launch",
"externalConsole": false
}
]
}
Примечание: Свойство externalConsole должно быть установлено в false если мы хотим видеть отладочные сообщения приложения в окне отладчика.
Примечание: Этот файл может иметь несколько конфигураций для одного и того же, или разных отладчиков (таких как MSVC, GDB, LLDB).
После того как файл launch.json создан и скопирован в нужное место, нужно выбрать нужный отладчик из списка, нажав на соответствую кнопку внизу справа на на панели инструментов редактора:
Теперь можно устанавливать точку останова в исходном коде выбранного продукта и нажимать на кнопку «Debug» внизу на панели инструментов редактора:
После этого можно наслаждаться отладкой:
Заключение
Конечно, в данном обзоре не раскрыты некоторые другие моменты работы с редактором (например, работа через команды), а также не дано пояснение для опций настройки QBS. Подробнее ознакомиться об этом можно, прочитав документацию, идущую в комплекте с расширением и/или документацию по QBS:
- Документация по QBS: doc.qt.io/qbs/index.html
- Документация по расширению: github.com/denis-shienkov/vscode-qbs/tree/master/docs
- Исходный код расширения: github.com/denis-shienkov/vscode-qbs
- Релизы расширения: github.com/denis-shienkov/vscode-qbs/releases
- Баг трекер расширения: github.com/denis-shienkov/vscode-qbs/issues
В заключение хочу сказать большое спасибо всем кто помогал мне тестировать это расширение, предлагал новые идеи.
Также, настоятельная просьба все ошибки, пожелания, исправления слать на баг-трекер.
Gorthauer87
И все же интересно, а как сообщество думает переводить qbs на Qt6, в котором больше нет QtScript, вроде это называлось одной из причин, почему его на мороз выгнали.
ABBAPOH
Порт на QmlEngine идет достаточно успешно — резолвер проекта полностью портирован, ломающих изменений вроде бы не будет. К следующему релизу не успеем, но в целом всё выглядит многообещающе.
Потом, QtScript добавлен как сабмодуль уже много лет, его тоже можно портировать на Qt6 — там не такие большие изменения требуются (в самой Qbs даже чуть больше поправить надо), я проверял.