sich faul fühlen,
Das ist tasks.json
von vscode für Linux-Distributionen, um mehrere cpp-Dateien zu kompilieren.
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-g",
"${fileDirname}/*.cpp",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
Dies ist eine Windows-Antwort für dasselbe Problem:
Ich hatte auch damit zu kämpfen, bis ich unter https://code.visualstudio.com/docs/cpp/config-mingw die folgende Antwort fand:
Sie können Ihre Datei „tasks.json“ ändern, um mehrere C++-Dateien zu erstellen, indem Sie ein Argument wie "${workspaceFolder}\\*.cpp"
verwenden statt ${file}
. Dadurch werden alle .cpp-Dateien in Ihrem aktuellen Ordner erstellt. Sie können den Ausgabedateinamen auch ändern, indem Sie "${fileDirname}\\${fileBasenameNoExtension}.exe"
ersetzen mit einem fest codierten Dateinamen (zum Beispiel "${workspaceFolder}\\myProgram.exe"
).
Beachten Sie, dass das F in workspaceFolder groß geschrieben wird.
Als Beispiel sah in meiner Datei „tasks.json“ in meinem Projekt der Text zwischen den Klammern unter „args“ ursprünglich so aus:
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
Dies gab mir Referenzfehler, weil es nur eine und nicht beide meiner Dateien kompilierte.
Ich konnte das Programm jedoch zum Laufen bringen, nachdem ich diesen Text wie folgt geändert hatte:
"-g",
"${workspaceFolder}\\*.cpp",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
in task.json:
"label": "g++.exe build active file",
"args": [
"-g",
"${fileDirname}\\**.cpp",
//"${fileDirname}\\**.h",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
],
in launch.json:
"preLaunchTask": "g++.exe build active file"
Es funktioniert, wenn sich Ihre Quellen in einem separaten Ordner befinden
Wenn Sie mehrere Dateien haben und eine hängt von einem cpp
ab Datei für eine andere, müssen Sie g++ anweisen, sie ebenfalls zu kompilieren, damit der Linker sie finden kann. Der einfachste Weg wäre:
$ g++ Cat.cpp main.cpp -o Classes