Comment configurer le code Visual Studio pour comstackr du code C ++?

L’éditeur de code Visual Studio de Microsoft est plutôt sympa, mais il ne prend pas en charge par défaut la création de projets C ++.

Comment puis-je le configurer pour ce faire?

Les tâches de construction sont spécifiques au projet. Pour créer un nouveau projet, ouvrez un répertoire dans Visual Studio Code.

En suivant les instructions ici , appuyez sur Ctrl + Maj + P , tapez Configure Tasks , sélectionnez-le et appuyez sur Entrée .

Le fichier tasks.json sera ouvert. Collez le script de génération suivant dans le fichier et enregistrez-le:

 { "version": "0.1.0", "command": "make", "isShellCommand": true, "tasks": [ { "taskName": "Makefile", // Make this the default build command. "isBuildCommand": true, // Show the output window only if unrecognized errors occur. "showOutput": "always", // Pass 'all' as the build target "args": ["all"], // Use the standard less compilation problem matcher. "problemMatcher": { "owner": "cpp", "fileLocation": ["relative", "${workspaceRoot}"], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } } ] } 

Maintenant, allez dans le menu FichierPréférencesRaccourcis clavier , et ajoutez la liaison de clé suivante pour la tâche de génération:

 // Place your key bindings in this file to overwrite the defaults [ { "key": "f8", "command": "workbench.action.tasks.build" } ] 

Maintenant, lorsque vous appuyez sur F8, le Makefile sera exécuté et les erreurs seront soulignées dans l’éditeur.

Il existe un moyen beaucoup plus simple de comstackr et d’exécuter du code C ++, sans configuration requirejse:

  1. Installer l’ extension Code Runner
  2. Ouvrez votre fichier de code C ++ dans l’éditeur de texte, puis utilisez le raccourci Ctrl+Alt+N ou appuyez sur F1 , puis sélectionnez / tapez Run Code ou cliquez avec le bouton droit sur l’éditeur de texte, puis cliquez sur Run Code dans le menu contextuel. Exécuter, et la sortie sera affichée dans la fenêtre de sortie.

De plus, vous pouvez mettre à jour la configuration dans settings.json en utilisant différents compilateurs C ++ comme vous le souhaitez, la configuration par défaut pour C ++ est la suivante:

 "code-runner.executorMap": { "cpp": "g++ $fullFileName && ./a.out" } 

Un exemple de tâche makefile pour la nouvelle version 2.0.0 tasks.json.

Dans l’extrait ci-dessous, j’espère qu’ils seront utiles.

 { "version": "2.0.0", "tasks": [ { "label": "", "type": "shell", "command": "make", // use options.cwd property if the Makefile is not in the project root ${workspaceRoot} dir "options": { "cwd": "${workspaceRoot}/" }, // start the build without prompting for task selection, use "group": "build" otherwise "group": { "kind": "build", "isDefault": true }, "presentation": { "echo": true, "reveal": "always", "focus": false, "panel": "shared" }, // arg passing example: in this case is executed make QUIET=0 "args": ["QUIET=0"], // Use the standard less compilation problem matcher. "problemMatcher": { "owner": "cpp", "fileLocation": ["absolute"], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } } ] } 

Si votre projet a une configuration CMake, il est assez simple de configurer VSCode, par exemple en configurant tasks.json comme ci-dessous:

 { "version": "0.1.0", "command": "sh", "isShellCommand": true, "args": ["-c"], "showOutput": "always", "suppressTaskName": true, "options": { "cwd": "${workspaceRoot}/build" }, "tasks": [ { "taskName": "cmake", "args": ["cmake ."] }, { "taskName": "make", "args" : ["make"], "isBuildCommand": true, "problemMatcher": { "owner": "cpp", "fileLocation": "absolute", "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } } ] } 

Cela suppose qu’il existe un dossier dans la racine de l’espace de travail avec une configuration CMake.

Il y a aussi une extension d’intégration CMake qui ajoute une commande “CMake build” à VScode.

PS! Le problemMatcher est configuré pour clang -builds. Pour utiliser GCC, je pense que vous devez changer fileLocation en relative , mais je n’ai pas testé cela.

Voici comment j’ai configuré mon VS pour C ++ en utilisant le compilateur g ++ et cela fonctionne très bien, y compris les options de débogage:

fichier tasks.json

 { "version": "0.1.0", "command": "g++", "isShellCommand": true, // comstacks and links with debugger information "args": ["-g", "-o", "hello.exe", "hello.cpp"], // without debugger information // "args": ["-o", "hello.exe", "hello.cpp"], "showOutput": "always" } 

fichier launch.json

 { "version": "0.2.0", "configurations": [ { "name": "C++ Launch (Windows)", "type": "cppdbg", "request": "launch", "program": "${workspaceRoot}/hello.exe", "MIMode": "gdb", "miDebuggerPath": "C:\\MinGw\\bin\\gdb.exe", "stopAtEntry": false, "cwd": "${workspaceRoot}", "externalConsole": false, "visualizerFile": "${workspaceRoot}/my.natvis" } ] } 

J’ai aussi l’extension ‘C / C ++ for Visual Studio Code’ installée dans le code VS

Par frustration du manque de documentation claire, j’ai créé un projet Mac sur github qui devrait fonctionner (à la fois en construction et en débogage):

vscode-mac-c-example

Notez qu’il nécessite XCode et l’extension VSCode Microsoft cpptools.

Je prévois de faire la même chose pour Windows et Linux (à moins que Microsoft écrive d’abord une documentation décente …).

Avec un code VS mis à jour, vous pouvez le faire de la manière suivante:

  1. Appuyez sur ( Ctrl + P ) et tapez:

     ext install cpptools 
  2. Ouvrez un dossier ( Ctrl + K & Ctrl + O ) et créez un nouveau fichier dans le dossier avec l’extension .cpp (ex: hello.cpp ):

  3. Tapez votre code et appuyez sur Enregistrer.

  4. Hit ( Ctrl + Shift + P et tapez, Configure task runner puis sélectionnez other en bas de la liste.

  5. Créez un fichier de commandes dans le même dossier avec le nom build.bat et incluez le code suivant dans le corps du fichier:

     @echo off call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 set comstackrflags=/Od /Zi /EHsc set linkerflags=/OUT:hello.exe cl.exe %comstackrflags% hello.cpp /link %linkerflags% 
  6. Modifiez le fichier task.json comme suit et enregistrez-le :

     { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "0.1.0", "command": "build.bat", "isShellCommand": true, //"args": ["Hello World"], "showOutput": "always" } 
  7. Appuyez sur ( Ctrl + Maj + B pour exécuter la tâche de génération . Cela créera les fichiers .obj et .exe pour le projet.

  8. Pour déboguer le projet, appuyez sur F5 et sélectionnez C ++ (Windows) .

  9. Dans le fichier launch.json , modifiez la ligne suivante et enregistrez le fichier:

     "program": "${workspaceRoot}/hello.exe", 
  10. Hit F5 .

Il y a maintenant une extension de langage C / C ++ de Microsoft. Vous pouvez l’installer en allant dans le “quick open” chose ( Ctrl + p ) et en tapant:

 ext install cpptools 

Vous pouvez lire à ce sujet ici:

https://blogs.msdn.microsoft.com/vcblog/2016/03/31/cc-extension-for-visual-studio-code/

C’est très simple, à partir de mai 2016.

Voici comment j’ai configuré mon VS pour C ++

launch.json

 { "version": "0.2.0", "configurations": [ { "name": "C++ Launch (GDB)", "type": "cppdbg", "request": "launch", "targetArchitecture": "x86", "program": "${workspaceRoot}\\${fileBasename}.exe", "miDebuggerPath":"C:\\mingw-w64\\bin\\gdb.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceRoot}", "externalConsole": true, "preLaunchTask": "g++" } ] } 

tâches.json

 { "version": "0.1.0", "command": "g++", "args": ["-g","-std=c++11","${file}","-o","${workspaceRoot}\\${fileBasename}.exe"], "problemMatcher": { "owner": "cpp", "fileLocation": ["relative", "${workspaceRoot}"], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } } 

c_cpp_properties.json

 { "configurations": [ { "name": "Win32", "includePath": [ "${workspaceRoot}", "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++", "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/x86_64-w64-mingw32", "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/backward", "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include", "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/tr1", "C:/mingw-w64/x86_64-w64-mingw32/include" ], "defines": [ "_DEBUG", "UNICODE", "__GNUC__=6", "__cdecl=__atsortingbute__((__cdecl__))" ], "intelliSenseMode": "msvc-x64", "browse": { "path": [ "${workspaceRoot}", "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++", "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/x86_64-w64-mingw32", "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/backward", "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include", "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/tr1", "C:/mingw-w64/x86_64-w64-mingw32/include" ] }, "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" } ], "version": 3 } 

Référence:

  1. C / C ++ pour le code VS

  2. Modèle c_cpp_properties.json

Vous pouvez vous référer à cette dernière liste ayant une version 2.0.0 pour Visual Studio Code, https://gist.github.com/akanshgulati/56b4d469523ec0acd9f6f59918a9e454

Vous pouvez facilement comstackr et exécuter chaque fichier sans mettre à jour la tâche. C’est générique et ouvre également le terminal pour les entrées.