sintiéndome perezoso,
Este es tasks.json
de vscode para distribuciones de Linux, para compilar múltiples archivos cpp.
{
"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
}
}
]
}
Esta es una respuesta de Windows para el mismo problema:
También estaba luchando con esto hasta que encontré la siguiente respuesta en https://code.visualstudio.com/docs/cpp/config-mingw:
Puede modificar su tasks.json para crear varios archivos C++ usando un argumento como "${workspaceFolder}\\*.cpp"
en lugar de ${file}
. Esto creará todos los archivos .cpp en> su carpeta actual. También puede modificar el nombre del archivo de salida reemplazando "${fileDirname}\\${fileBasenameNoExtension}.exe"
con un nombre de archivo codificado (por>ejemplo "${workspaceFolder}\\myProgram.exe"
).
Tenga en cuenta que la F en WorkspaceFolder está en mayúscula.
Como ejemplo, en mi archivo tasks.json en mi proyecto, el texto entre corchetes debajo de "args" apareció originalmente de la siguiente manera:
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
Esto me dio errores de referencia porque solo estaba compilando uno y no mis dos archivos.
Sin embargo, pude hacer que el programa funcionara después de cambiar ese texto a lo siguiente:
"-g",
"${workspaceFolder}\\*.cpp",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
en tareas.json:
"label": "g++.exe build active file",
"args": [
"-g",
"${fileDirname}\\**.cpp",
//"${fileDirname}\\**.h",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
],
en lanzamiento.json:
"preLaunchTask": "g++.exe build active file"
funcionará si sus fuentes están en una carpeta separada
Si tiene varios archivos y uno depende de un cpp
archivo para otro, debe decirle a g ++ que lo compile también, para que el enlazador pueda encontrarlo. La forma más sencilla sería:
$ g++ Cat.cpp main.cpp -o Classes