Вот мое решение этой проблемы. Я связываю его с моими проектами Makefile.
Во-первых, вам нужно создать Makefile, если использование G CC с использованием Makefile само по себе является ... спорным, если не сказать больше. Но я думаю, что это служит целям этого примера. Как вы, возможно, знаете, запуск «make» вместо g ++ в текущем каталоге будет анализировать Makefile и запускать соответствующие команды. Но в вашем случае ваш Makefile может выглядеть примерно так:
#You're gonna wanna make it think that your executable doesnt exist, otherwise,
#because the executable exists, make will assume its the most recent build.
.PHONY: debug
#using g++ and the flags inline like this, is generally seen as bad practice, it might be worth
#looking into using Makefiles to make this more acceptable, but this will get you started.
debug:
g++ -g -o debug main.cpp -std=c++17
clean:
rm debug
#if you copy this exactly, make you you replace the spaces with proper tab
#characters otherwise it will error out.
Часть Juicy находится в коде VS; Это очень мощная функция, известная как задачи. Задачи - это их особая кроличья нора, но, прямо скажем, вы добавляете задачу в массив «tasks» в сгенерированном файле task. json в вашей рабочей области, если вы не знакомы с тем, как это может выглядеть, Вот синтаксис для задачи:
{
"label": "[name of task]",
"type": "[type of task, usually its a shell command]",
"command": "[the actual command to call]"
}
Есть много других функций, которые могут предложить задачи, но для создания инструмента сборки это все, что вам нужно, для меня это привело к файлу, который выглядел как это:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build_debug",
"type": "shell",
"command": "make"
},
{
"label": "clean",
"type": "shell",
"command": "make clean"
},
{
"label": "build",
"dependsOn": [
"clean",
"build_debug"
],
"problemMatcher": [
"$gcc"
]
}
]
}
Зачем нам нужен финальный вызов сборки? потому что ваш объект запуска. json может принимать «preLaunchTask», который будет автоматически вызываться перед отладкой. Вы можете выполнить этот последний вызов сборки, и он скомпилирует, отладит и запустит ваше приложение. он даже интегрирует точки останова GDB и отслеживание памяти в рабочее пространство. Мой запуск. json выглядит следующим образом:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/runnable",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
]
}
]
}
Извините за долгое повторение, я надеюсь, что это поможет:)