GNU/Linux >> Linux Esercitazione >  >> Linux

VS Code non creerà programmi c++ con più file di origine .ccp

sentirsi pigro,

Questo è tasks.json di vscode per distribuzioni Linux, per compilare più file 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
        }
    }
]
}

Questa è una risposta di Windows per lo stesso problema:

Stavo lottando anche con questo finché non ho trovato la seguente risposta su https://code.visualstudio.com/docs/cpp/config-mingw :

Puoi modificare il file tasks.json per creare più file C++ utilizzando un argomento come "${workspaceFolder}\\*.cpp" invece di ${file} . Questo creerà tutti i file .cpp nella>tua cartella corrente. Puoi anche modificare il nome del file di output sostituendo "${fileDirname}\\${fileBasenameNoExtension}.exe" con un nome file codificato (per>esempio "${workspaceFolder}\\myProgram.exe" ).

Nota che la F in workspaceFolder è in maiuscolo.

Ad esempio, nel mio file tasks.json nel mio progetto, il testo tra parentesi sotto "args" appariva originariamente come segue:

"-g",
  "${file}",
  "-o",
  "${fileDirname}\\${fileBasenameNoExtension}.exe"

Questo mi ha dato errori di riferimento perché stava compilando solo uno e non entrambi i miei file.

Tuttavia, sono riuscito a far funzionare il programma dopo aver cambiato il testo nel seguente:

"-g",
"${workspaceFolder}\\*.cpp",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"

in tasks.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"

funzionerà se le tue fonti sono in una cartella separata


Se hai più file e uno dipende da un cpp file per un altro, devi dire a g++ di compilarlo, in modo che il linker possa trovarlo. Il modo più semplice sarebbe:

$ g++ Cat.cpp main.cpp -o Classes


Linux
  1. CloudCross:sincronizza file e directory con più archivi cloud

  2. Strumento Linux per controllare l'ortografia dei commenti nel codice sorgente c/c++

  3. Come controllare l'indirizzo IP di origine di un pacchetto ZeroMQ su una macchina con più IP?

  4. In che modo diverse distribuzioni modificano le posizioni dei file di configurazione per i programmi?

  5. Ordina i file di testo con più righe come una riga

Trasferisci file tra il tuo telefono e Linux con questo strumento open source

Mantieni più distribuzioni Linux su una USB con questo strumento open source

Sincronizza i file tra più sistemi con Syncthing

L'applicazione C++ termina con il codice di uscita 143:cosa significa?

Come posso convertire automaticamente tutti i file di codice sorgente in una cartella (in modo ricorsivo) in un singolo PDF con evidenziazione della sintassi?

Perché find -mtime non funziona come previsto su file con fusi orari diversi?