GNU/Linux >> Znalost Linux >  >> Linux

VS Code nebude vytvářet programy c++ s více zdrojovými soubory .ccp

cítit se líný,

Toto je tasks.json vscode pro linuxové distribuce ke kompilaci více souborů 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
        }
    }
]
}

Toto je odpověď systému Windows na stejný problém:

Také jsem s tím bojoval, dokud jsem na https://code.visualstudio.com/docs/cpp/config-mingw nenašel následující odpověď:

Pomocí argumentu jako "${workspaceFolder}\\*.cpp" můžete upravit svůj task.json tak, aby vytvořil více souborů C++ místo ${file} . Tím se vytvoří všechny soubory .cpp ve>vaší aktuální složce. Můžete také upravit výstupní název souboru nahrazením "${fileDirname}\\${fileBasenameNoExtension}.exe" s pevně zakódovaným názvem souboru (například>"${workspaceFolder}\\myProgram.exe" ).

Všimněte si, že F ve složce workspaceFolder je velké.

Jako příklad v mém souboru tasks.json v mém projektu se text mezi závorkami pod „args“ původně objevil takto:

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

Tím jsem dostal referenční chyby, protože kompiloval pouze jeden a ne oba mé soubory.

Po změně textu na následující text se mi však podařilo spustit program:

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

v task.json:

        "label": "g++.exe build active file",
        "args": [
            "-g",
            "${fileDirname}\\**.cpp",
            //"${fileDirname}\\**.h",
            "-o",
            "${fileDirname}\\${fileBasenameNoExtension}.exe",
        ],

v launch.json:

"preLaunchTask": "g++.exe build active file"

bude to fungovat, pokud jsou vaše zdroje v samostatné složce


Pokud máte více souborů a jeden závisí na cpp soubor pro jiný, musíte říct g++, aby ho také zkompiloval, aby ho linker našel. Nejjednodušší způsob by byl:

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


Linux
  1. Zdrojový kód Netstatu?

  2. Makefiles se zdrojovými soubory v různých adresářích

  3. zápasí s c++ IDE na linuxu

  1. C/C++ s GCC:Statické přidávání zdrojových souborů do spustitelného souboru/knihovny

  2. Jak bych vytvořil python sám ze zdrojového kódu na Ubuntu?

  3. Může Clang kompilovat kód s GCC zkompilovaným .a libs?

  1. Ventoy:Jak vytvořit multiboot USB disk s více ISO soubory

  2. CloudCross – Synchronizace souborů a adresářů s více cloudovými úložišti

  3. Proč find -mtime nefunguje podle očekávání u souborů s různými časovými pásmy?