GNU/Linux >> Tutoriales Linux >  >> Linux

VS Code no compilará programas C++ con varios archivos fuente .ccp

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


Linux
  1. CloudCross:sincronice archivos y directorios con múltiples almacenamientos en la nube

  2. Herramienta de Linux para verificar la ortografía de los comentarios en el código fuente c/c++

  3. C/C++ con GCC:agrega estáticamente archivos de recursos al ejecutable/biblioteca

  4. ¿Cómo construiría python yo mismo a partir del código fuente en Ubuntu?

  5. La aplicación C++ termina con el código de salida 143. ¿Qué significa?

Transfiere archivos entre tu teléfono y Linux con esta herramienta de código abierto

Mantenga varias distribuciones de Linux en un USB con esta herramienta de código abierto

Sincronice archivos entre múltiples sistemas con Syncthing

¿Puede Clang compilar código con GCC compilado .a libs?

¿Cómo puedo convertir automáticamente todos los archivos de código fuente en una carpeta (recursivamente) a un solo PDF con resaltado de sintaxis?

Ordenar archivos de texto con varias líneas como una fila