Как разработчик программного обеспечения, я пробовал различные интегрированные среды разработки (IDE) и текстовые редакторы для разработки кода (vim, Emacs, Sublime Text и т. Д.). Из тех, что я пробовал, Microsoft Visual Studio Code (VSCode) выделяется среди остальных как гибкий и легкий редактор. Что замечательно в VSCode, так это его расширяемость с помощью различных плагинов из Extension Marketplace. Я также упоминал, что это бесплатно И обновляется каждый месяц !?
Как разработчик, основным языком программирования которого является C ++, я считаю, что VSCode предоставляет все инструменты, например отладчик gdb и функции, например IntelliSense, облегчающий процесс разработки. Однако, когда я впервые начал использовать редактор, онлайн-поиск находил статьи, в которых больше внимания уделяется тому, какие расширения использовать, которые для новичка, слепая установка их, может быстро раздуть редактор и затруднить настройку расширений, чтобы они были полезными.
В этой статье я собираюсь сосредоточиться на 4 темах, которые помогут непосвященным настроить среду VSCode для кодирования на C ++:
- Настроить рабочее пространство VSCode
- Настроить настройки отладчика
- Настроить инструкции по сборке
- Основные расширения для разработки кода
Настроить рабочее пространство VSCode
VSCode использует концепцию рабочей области для применения пользовательских настроек и позволяет пользователю указывать команды, которые применяются только к кодам в этой рабочей области. Коды НЕ должны физически находиться в одной папке!
Рабочее пространство и его настройки представлены файлом .code-workspace
в каталоге. Когда вы добавляете эту папку в рабочую область (щелкните правой кнопкой мыши окно проводника и выберите Добавить папку в рабочую область), VSCode выполнит поиск файла и установит рабочую область.
На приведенном выше снимке экрана я поместил свой .code-workspace
в папку Coding_Workspace
, которая содержит несколько репозиториев git. Эти подпапки также добавляются в рабочую область с помощью Добавить папку в рабочую область для создания многокорневой рабочей области. Это чрезвычайно полезно, когда вы работаете с несколькими репозиториями и хотите указать команды для конкретных репозиториев. Это станет более очевидным, когда я объясню, как настроить инструкции по сборке.
Если вы начинаете с нуля, просто откройте новое окно VSCode. На экране приветствия выберите Добавить папку рабочей области. Выберите папку, которую хотите сделать своим рабочим пространством. Выберите Файл ›Сохранить рабочую область как, и файл .code-workspace
будет автоматически создан с заполненными минимальными настройками. Когда вы добавляете другие папки в рабочую область, этот файл будет автоматически обновляться VSCode с именем папки, поэтому его можно использовать для создания конкретных инструкций для файлов только в этой папке.
Еще одна вещь, которую VSCode сделает при первом создании рабочего пространства, - это создание папки .vscode
. В этой папке хранятся локальные настройки и инструкции.
Обратите внимание на два файла: tasks.json
и launch.json
. В первом указаны инструкции по сборке. Второй определяет настройки для среды отладки.
Настроить инструкции по сборке
VSCode поддерживает настраиваемые задачи, которые упрощают процесс разработки и сокращают набор текста и запоминание. Эти задачи также можно объединить в цепочку, чтобы сформировать более сложные задачи сборки или выполнения.
Все настраиваемые задачи хранятся в tasks.json
в подпапке .vscode
. Каждый из них может быть указан в списке, разделенном запятыми, в фигурных скобках {}
, как показано на рисунке ниже.
Одна задача
У каждой задачи есть свойства, которые может определить пользователь. Здесь мы сосредоточимся только на том, что я считаю важным. Полный список см. По ссылке в сноске¹.
label
: Это строка, которая поможет вам определить, что будет делать эта задача. Он также используется в качестве имени в раскрывающемся меню при выборе Задачи: выполнить задачу на палитре команд (Ctrl+Shift+P
).type
: тип выполняемой команды. Поддерживаетshell
илиprocess
.command
: команда, которую вы хотите выполнить с помощью VSCode.args
: массив аргументов, разделенных запятыми, которые вы хотите передать команде. Например,-DCMAKE_BUILD_TYPE=Debug
, чтобы указать CMake создать файл сборки с флагами отладки.group
: группа, в которой VSCode должен организовать эту задачу. Поддерживаетbuild
,test
иnone
.
group
также поддерживает установку задачи по умолчанию при использовании сочетания клавиш Ctrl+Shift+B
. Для этого вместо указания одной из 3 опций выше в фигурных скобках {}
укажите следующие свойства:
kind
:build
,test
,none
.isDefault
:true
,false
.
Если для всех ваших задач свойство isDefault
установлено в значение true, тогда ярлык откроет раскрывающееся меню, в котором вы сможете выбрать, что нужно выполнить.
ПРИМЕЧАНИЕ. Существует еще одно свойство presentation
, которое позволяет вам управлять выводом задач. По умолчанию он настроен на то, чтобы всегда запускать новый терминал и печатать на нем (для получения дополнительной информации см. Сноску¹).
Вы можете видеть на рисунке выше, что я использую {workspaceFolder:pcl}
в args
и cwd
. Помните, я говорил о мульти-корневом рабочем пространстве? Это позволяет мне выполнять команду CMake в самой папке pcl
и не беспокоиться об относительных или абсолютных путях. VSCode автоматически расширяет выражение; в моем случае ~/Code_Workspace/pcl/
.
В дополнение к workspaceFolder
VSCode предопределяет другие переменные, которые можно использовать для обобщения настроек, требующих пути. Пожалуйста, смотрите сноску для получения более подробной информации.
Объединение задач
Еще одна мощная функция определения ваших задач в tasks.json
- это возможность объединять отдельные задачи в цепочку. Для этого просто создайте новую задачу со следующими свойствами:
label
: укажите уникальное имя для задачиdependsOn
: Массив разделенных запятыми меток отдельной задачиdependsOrder
: укажите порядок, в котором задача будет выполняться. Текущая задача будет выполнена последней, и каждая задача должна вернуться до выполнения следующей. Поддерживаетsequence
.
Эта функция полезна для объединения задач сборки вместе или для сборки и запуска модульных тестов.
Установить настройки отладчика
На мой взгляд, это мощная функция, которая выделяет VSCode среди других текстовых редакторов. Подобно задачам, пользователи могут настроить свою среду отладки в launch.json
в списке, разделенном запятыми, как показано на снимке экрана ниже.
Каждый сеанс отладки поддерживает множество свойств. Приведенный ниже список не является исчерпывающим и сосредоточен на тех, которые я считаю важными. Полный список см. В сносках² ³.
name
: Уникальное имя, которое позволяет отличать задачи отладки друг от друга.type
: Тип используемого отладчика. Если вы установили расширение C / C ++,cppdbg
станет доступным. Некоторые другие поставляются с редактором:node
,php
,go
для других языков программирования.request
:launch
новый процесс илиattach
запущенный процесс. Если выбранattach
, в окне отладки будет отображаться раскрывающееся меню запущенного процесса с идентификаторами на выбор.program
: путь к исполняемому файлу, который нужно отлаживать.args
: разделенный запятыми список аргументов для передачи исполняемому файлу.stopAtEntry
: истина или ложь, вне зависимости от того, сломается ли отладчик при вводе кода.cwd
: рабочий каталог для поиска зависимостей. Установка на${workspaceFolder}
является стандартной.externalConsole
: истина или ложь, запускать ли терминал отладки во внешней консоли.MIMode
: это требуется для расширения C / C ++. Поддерживаетgdb
илиlldb
.setupCommands
: Это относится к расширению C / C ++ и является опцией. Достаточно настройки на рисунке выше.preLaunchTask
: разделенный запятыми список имен задач изtasks.json
, которые нужно запустить перед запуском отладчика. Например, сборка кода в режиме отладки перед отладкой.postDebugTask
: разделенный запятыми список имен задач изtasks.json
, запускаемых после сеанса отладки. Может использоваться для очистки временных файлов.
На снимке экрана вы можете заметить, что я снова использую ${workspaceFolder:pcl}
для cwd
и program
. Это сообщает VSCode, что я хочу, чтобы отладчик, в данном случае gdb,
, подключился к исполняемому файлу test
в папке pcl
в моей рабочей области и сделал эту папку корневым каталогом при запуске отладчика.
Примечание. Если вы найдете список свойств, которые нужно настроить, не беспокойтесь, VSCode покажет доступные параметры, когда вы нажмете “
при редактировании .json
файлов!
Основные расширения для разработки кода
И, наконец, следующий список расширений, которые я нашел полезными и считаю необходимыми для разработчиков C ++:
- C/C++
- Кланг-Формат
- CMake
- Докер
- ГитЛенс
- История Git
- Пакет расширений Git
- Запросы на извлечение Github и проблемы
- Vscode-icons
Примечание. Если вы работаете с ROS и вашей основной ОС является Linux. Также рекомендую скачать расширение ROS.
Список не является обширным и может не включать другие расширения, которые могут оказаться полезными для других разработчиков. Я рекомендую придерживаться перечисленных выше в течение нескольких недель, прежде чем просматривать рынок (вы определенно можете получить убытки в этом месте!).
Каждое из этих расширений предоставляет команды, к которым можно получить доступ через палитру команд. Вы можете начать вводить то, чего хотите достичь, и VSCode постепенно сузит список вариантов. Мало того, отображаемые команды отсортированы по недавно использованным.
Для расширений, имеющих дело с репозиториями кода, такими как Git, они позволяют пользователю выбирать репозиторий, к которому должна применяться выбранная команда.
Некоторые другие расширения, такие как C / C ++, добавляют не исполняемые команды, а дополнительные настройки, которые могут еще больше улучшить редактор. Например, подсветка синтаксиса C / C ++.
Резюме
В этой статье я показал, как настроить рабочее пространство и параметры VSCode для помощи в разработке на C ++. Это то, что я обнаружил у меня, и очень помогло мне в моем путешествии по программированию, и я надеюсь, что это может сделать то же самое для вас.
Разработчикам ROS я рекомендую прочитать следующие статьи о том, как настроить VSCode для интеграции рабочего процесса ROS в вашу разработку и тестирование:
Удачного кодирования!
Сноска
¹ https://code.visualstudio.com/docs/editor/tasks
² https://code.visualstudio.com/docs/editor/debugging
³ https://code.visualstudio.com/docs/cpp/launch-json-reference
⁴ https://code.visualstudio.com/docs/editor/variables-reference