Поскольку мне всё равно пришлось ставить Visual Studio Community для того, чтобы установить Windows Kits для работы с WinAPI, то я решил не использовать MingW, а доустановить C++ build tools и использовать их для компиляции. В этом случае придётся переделать задачи (tasks) и настройки VSCode.
Хорошее описание нашёл здесь, его и буду использовать в данной заметке.
Нам потребуется
1. Естественно нам потребуется сама программа VSCode.
2. В Visual Studio Community должен быть установлен компонент Desktop development with C++:
Чтобы проверить успешную установку, достаточно вызвать Developer Command Prompt for VS 2019 (файл VsDevCmd.bat) из Пуска. Там нужно запустить файл cl.exe. Вывод консоли должен быть без ошибок:
********************************************************************** ** Visual Studio 2019 Developer Command Prompt v16.9.2 ** Copyright (c) 2021 Microsoft Corporation ********************************************************************** C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>cl.exe Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29913 for x86 Copyright (C) Microsoft Corporation. All rights reserved. usage: cl [ option... ] filename... [ /link linkoption... ]
3. Для VSCode должно быть установлено дополнение (расширение) Microsoft C/C++
Настройка
4. В Проводнике открываем рабочую папку проекта и, удерживая
5. В открывшемся окошке PowerShell запускаем VSCode, для этого нужно набрать code . и нажать
PS C:\Users\Denis\source\repos\SampleVSCode> code .
6. В запущенном редакторе создадим новый файл:
▶
7. Это просто тест, поэтому код будет простейшим:
#include <iostream>
using namespace std;
int main()
{
cout << "It Works!" << endl;
cin.get();
}
8. Сохраним файл под именем main.cpp:
▶
9. Открываем палитру команд с помощью комбинации клавиш
10. Список большой, поэтому проще ввести часть слова и выбрать нужную команду из списка:
11. В конфигурации необходимо проверить, а, при необходимости, установить путь для компилятора:
C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29910/bin/Hostx64/x64/cl.exe
12. Внесём изменения в файл settings.json:
"buildDir": "${workspaceRoot}\\build",
"buildCommand": "C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio\\2019\\Community\\Common7\\Tools\\VsDevCmd.bat && cl",
13. Ранее я уже создавал файл Задач tasks.json, поэтому сейчас я добавлю к нему новые строчки:
{
"type": "shell",
"label": "Set dependencies for build",
"command": "if not exist ${config:buildDir} mkdir ${config:buildDir}"
},
{
"label": "C/C++: cl.exe build active file",
"detail": "Compile and build selected C++ project with Visual Studio cl.exe",
"type": "shell",
"command": "${config:buildCommand}",
"args": [
"/Zi",
"/EHsc",
"/Fe:",
"${config:buildDir}\\${fileBasenameNoExtension}.exe",
"/Fo${config:buildDir}\\",
"/Fd${config:buildDir}\\",
"${file}"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": ["$msCompile"],
"group": {
"kind": "build",
"isDefault": true
},
"dependsOn": [
"Set dependencies for build"
]
},
~ Missing '(' after 'if' in if statement.
CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
FullyQualifiedErrorId : MissingOpenParenthesisInIfStatement
В этом случае фрагмент кода с проверкой пути должен быть таким:
{
"type": "shell",
"label": "Set dependencies for build",
"command": "cmd",
"args": [
"/C",
"if not exist ${config:buildDir} mkdir ${config:buildDir}"
]
},
Хотя, если у вас VSCode настроен для работы с CMD, а не PowerShell, то ошибки быть не должно!
14. Чтобы у нас была возможность запустить проект на отладку, можно использовать файл launch.json. Но я не хочу создавать такой файл для каждого проекта каждый раз, поэтому сделаю глобальную конфигурацию. Для этого я добавлю строчки в файл settings.json:
"launch": {
"version": "0.2.0",
"configurations":
[{
"name": "cl.exe - Build and debug active file",
"type": "cppvsdbg",
"request": "launch",
"program": "${config:buildDir}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${env:buildDir}",
"environment": [],
"console": "externalTerminal",
"preLaunchTask": "C/C++: cl.exe build active file"
}]
},
Благодаря этому, при нажатии
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024