GNU/Linux >> Tutoriels Linux >  >> Linux

VS Code ne construira pas de programmes c++ avec plusieurs fichiers source .ccp

se sentir paresseux,

C'est tasks.json de vscode pour les distributions Linux, pour compiler plusieurs fichiers 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
        }
    }
]
}

Ceci est une réponse Windows pour le même problème :

Je me débattais également avec cela jusqu'à ce que je trouve la réponse suivante sur https://code.visualstudio.com/docs/cpp/config-mingw :

Vous pouvez modifier votre tasks.json pour créer plusieurs fichiers C++ en utilisant un argument comme "${workspaceFolder}\\*.cpp" au lieu de ${file} . Cela construira tous les fichiers .cpp dans> votre dossier actuel. Vous pouvez également modifier le nom du fichier de sortie en remplaçant "${fileDirname}\\${fileBasenameNoExtension}.exe" avec un nom de fichier codé en dur (par>exemple "${workspaceFolder}\\myProgram.exe" ).

Notez que le F dans workspaceFolder est en majuscule.

Par exemple, dans mon fichier tasks.json de mon projet, le texte entre les crochets sous "args" apparaissait à l'origine comme suit :

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

Cela m'a donné des erreurs de référence car il ne compilait qu'un seul de mes fichiers et non les deux.

Cependant, j'ai pu faire fonctionner le programme après avoir changé ce texte comme suit :

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

dans tâches.json :

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

dans launch.json :

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

cela fonctionnera si vos sources sont dans un dossier séparé


Si vous avez plusieurs fichiers et que l'un dépend d'un cpp file pour un autre, vous devez indiquer à g++ de le compiler également, afin que l'éditeur de liens puisse le trouver. Le moyen le plus simple serait :

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


Linux
  1. Makefiles avec des fichiers source dans différents répertoires

  2. aux prises avec les IDE c++ sous Linux

  3. C/C++ avec GCC :ajouter statiquement des fichiers de ressources à l'exécutable/à la bibliothèque

  4. Comment pourrais-je construire moi-même python à partir du code source sur Ubuntu ?

  5. Clang peut-il compiler du code avec des bibliothèques .a compilées par GCC ?

Transférez des fichiers entre votre téléphone et Linux avec cet outil open source

Conservez plusieurs distributions Linux sur une clé USB avec cet outil open source

Synchroniser des fichiers entre plusieurs systèmes avec Syncthing

Comment puis-je convertir automatiquement tous les fichiers de code source d'un dossier (récursivement) en un seul PDF avec coloration syntaxique ?

Pourquoi find -mtime ne fonctionne-t-il pas comme prévu sur des fichiers avec des fuseaux horaires différents ?

Comment récupérer plusieurs fichiers d'une machine distante à une machine locale avec Ansible