Como faço para configurar o código do Visual Studio para compilar o código C ++?

O editor de código do Visual Studio da Microsoft é muito bom, mas não tem suporte padrão para construir projetos em C ++.

Como faço para configurá-lo para fazer isso?

As tarefas de construção são específicas do projeto. Para criar um novo projeto, abra um diretório no código do Visual Studio.

Seguindo as instruções aqui , pressione Ctrl + Shift + P , digite Configure Tasks , selecione-o e pressione Enter .

O arquivo tasks.json será aberto. Cole o seguinte script de construção no arquivo e salve-o:

 { "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 } } } ] } 

Agora vá para o menu ArquivoPreferênciasAtalhos de Teclado e adicione a seguinte binding de teclas para a tarefa de construção:

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

Agora, quando você pressionar F8, o Makefile será executado e os erros serão sublinhados no editor.

Existe uma maneira muito mais fácil de compilar e executar o código C ++, sem necessidade de configuração:

  1. Instalar a extensão do executor de código
  2. Abra o arquivo de código C ++ no Editor de texto e use o atalho Ctrl+Alt+N , ou pressione F1 e selecione / digite Run Code ou clique com o botão direito no Editor de texto e clique em Run Code no menu de contexto, o código será compilado e executar, e a saída será mostrada na janela de saída.

Além disso, você pode atualizar a configuração em settings.json usando diferentes compiladores C ++ como quiser, a configuração padrão para C ++ é a seguinte:

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

Um exemplo de tarefa do makefile para a nova versão 2.0.0 tasks.json.

No snippet abaixo alguns comentários, espero que sejam úteis.

 { "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 } } } ] } 

Se o seu projeto tem uma configuração CMake, é muito simples configurar o VSCode, por exemplo, setup tasks.json como abaixo:

 { "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 } } } ] } 

Isso pressupõe que haja uma pasta build na raiz do espaço de trabalho com uma configuração do CMake.

Há também uma extensão de integração CMake que adiciona um comando “CMake build” ao VScode.

PS! O problemMatcher está configurado para clang -builds. Para usar o GCC, acredito que você precise alterar fileLocation para relative , mas não testei isso.

Aqui está como eu configurei meu VS para C ++ usando o compilador g ++ e ele funciona muito bem, incluindo opções de debugging:

arquivo tasks.json

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

arquivo 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" } ] } 

Eu também tenho extensão ‘C / C ++ para Visual Studio Code’ instalado no código VS

Frustrado com a falta de documentação clara, criei um projeto Mac no github que deve funcionar (tanto para compilar quanto para depurar):

vscode-mac-c-example

Observe que ele requer o XCode e a extensão cpptools do Microsoft VSCode.

Eu pretendo fazer o mesmo para o Windows e Linux (a menos que a Microsoft escreva documentação decente primeiro …).

Com um código VS atualizado, você pode fazer da seguinte maneira:

  1. Pressione ( Ctrl + P ) e digite:

     ext install cpptools 
  2. Abra uma pasta ( Ctrl + K e Ctrl + O ) e crie um novo arquivo dentro da pasta com a extensão .cpp (ex: hello.cpp ):

  3. Digite seu código e clique em salvar.

  4. Pressione ( Ctrl + Shift + P e digite, Configure task runner e, em seguida, selecione other na parte inferior da lista.

  5. Crie um arquivo em lotes na mesma pasta com o nome build.bat e inclua o seguinte código no corpo do arquivo:

     @echo off call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 set compilerflags=/Od /Zi /EHsc set linkerflags=/OUT:hello.exe cl.exe %compilerflags% hello.cpp /link %linkerflags% 
  6. Edite o arquivo task.json da seguinte maneira e salve-o :

     { // 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. Pressione Ctrl + Shift + B para executar a tarefa Build. Isso criará os arquivos .obj e .exe para o projeto.

  8. Para depurar o projeto, pressione F5 e selecione C ++ (Windows) .

  9. No arquivo launch.json , edite a seguinte linha e salve o arquivo:

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

Existe agora uma extensão de linguagem C / C ++ da Microsoft. Você pode instalá-lo indo até a opção “quick open” ( Ctrl + p ) e digitando:

 ext install cpptools 

Você pode ler sobre isso aqui:

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

É muito básico, a partir de maio de 2016.

Aqui está como eu configurei meu VS para 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++" } ] } 

tasks.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=__attribute__((__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 } 

Referência:

  1. C / C ++ para o código VS

  2. Modelo c_cpp_properties.json

Você pode fazer referência a essa última essência com uma tarefa da versão 2.0.0 para o código do Visual Studio, https://gist.github.com/akanshgulati/56b4d469523ec0acd9f6f59918a9e454

Você pode facilmente compilar e executar cada arquivo sem atualizar a tarefa. É genérico e também abre o terminal para inputs de input.