背景:
1、VS Code只是一個代碼編輯器,編譯、運行這些活需要其他程序完成。
2、C/C++ 編譯器的選擇,GCC/G++(MinFGW-w64)
3、MinGW和MinGW-w64是兩個不同的項目。MinGW本身已經很久沒有更新了,故不推薦。為了方便,本文中的MinGW指的其實都是MinGW-w64。
4、命令行的使用、系統變量的添加。
安裝vs code
插件安裝
1、必要插件
C/C++(ms-vscode.cpptools,微軟官方出品):功能最全的C/C++插件,而且是微軟官方的插件,可以放心下載
Code Runner(formulahendry.code-runner):快速編譯運行單個文件,方便。
2、推薦插件
Bracket Pair Colorizer:彩虹括號,匹配的括號會用相同的顏色標注出來。
Material Icon Theme:圖標包插件,“花里胡哨”,推薦。
One Dark Pro:主題插件,推薦Chinese Language Pack:中文語言包。
配置環境:
一鍵配置:
win7/10有效:不想折騰的話,下載一鍵配置壓縮包,解壓后,打開vscode_onesrc/,找到start.bat 右鍵->以管理員身份運行
安裝成功,顯示如下:
手動配置:
配置編譯器:
用VS Code運行C/C++前,需要先能夠在命令行編譯C/C++。
這里我們需要用到GCC去編譯。
下載地址:https://sourceforge.net/projects/mingw-w64/
MinGW-W64 GCC-8.1.0
x86_64-win32-seh
i686-win32-dwarf
64位電腦選擇x86_64,32位選擇i686。
下載解壓完成后,添加系統變量?當前路徑mingw64in?到path里面。設置好變量后,重啟電腦。在命令行中輸入gcc?或者g++
如果顯示如下界面:
配置成功,進行下一步。
配置json:
以下配置文件需要放在.vscode文件夾里面(注意有個點),如果工作目錄為workSpace.需要將.vscode放在workSpace目錄里面。
下面的C:Usersm91MyFileDevelopmingw64include(一共四個),需要換成你自己的gcc編譯器安裝路徑,如果你的路徑為C:mingw64你可以換成C:mingw64include
c_cpp_properties.json
{ "configurations":?[{ "name":?"Win32", "defines":?[ "_DEBUG", "UNICODE", "_UNICODE" ], "includePath":?[ "${workspaceFolder}", "C:Users15591MyFileDevelopmingw64include" ], "browse":?{ "path":?[ "${workspaceFolder}", "C:Users15591MyFileDevelopmingw64include" ], "limitSymbolsToIncludedHeaders":?true, "databaseFilename":?"" }, "windowsSdkVersion":?"10.0.17134.0", "compilerPath":?"C:Users15591MyFileDevelopmingw64bingcc.exe", "cStandard":?"c11", "cppStandard":?"c++17" }], "version":?4 }
launch.json
{ "version":?"0.2.0", "configurations":?[ { "name":?"(gdb)?Launch",?//配置名稱;在啟動配置下拉菜單中顯示 "type":?"cppdbg", "request":?"launch", "program":?"${fileDirname}/${fileBasenameNoExtension}.exe",?//?將要進行調試的程序的路徑 "args":?[],?//傳入的參數 "stopAtEntry":?false, "cwd":?"${workspaceFolder}", "environment":?[], "externalConsole":?true, "internalConsoleOptions":?"neverOpen",? //?如果不設為neverOpen,調試時會跳到“調試控制臺”選項卡,你應該不需要對gdb手動輸命令吧? "MIMode":?"gdb", "miDebuggerPath":?"C:Users15591MyFileDevelopmingw64bingdb.exe", "setupCommands":?[{ "description":?"Enable?pretty-printing?for?gdb", "text":?"-enable-pretty-printing", "ignoreFailures":?true }], "preLaunchTask":?"CppCompile"? //?調試會話開始前執行的任務,一般為編譯程序。與tasks.json的label相對應 } ] }
tasks.json
{ "version":?"2.0.0", "tasks":?[{ "label":?"CppCompile",? //?任務名稱,與launch.json的preLaunchTask相對應???????????? "command":?"g++",?//?要使用的編譯器,我們主要針對cpp文件調試,亦可以改成其他的???????????? "args":?[???????????????? "${file}",???????????????? "-o",?//?指定輸出文件名,不加該參數則默認輸出a.exe,Linux下默認a.out???????????????? "${fileDirname}/${fileBasenameNoExtension}.exe",???????????????? "-g",?//?生成和調試有關的信息???????????????? "-Wall",?//?開啟額外警告???????????????? "-static-libgcc",?//?靜態鏈接???????????????? "-std=c++17"?//?C語言最新標準為c11,或根據自己的需要進行修改 ],?//?編譯命令參數???????????? "type":?"shell",?//?可以為shell或process,前者相當于先打開shell再輸入命令,后者是直接運行命令???????????? "group":?{???????????????? "kind":?"build",???????????????? "isDefault":?true?//?設為false可做到一個tasks.json配置多個編譯指令,需要自己修改本文件,我這里不多提 }, "presentation":?{ "echo":?false, "reveal":?"always",? //?在“終端”中顯示編譯信息的策略,可以為always,silent,never。具體參見VSC的文檔???????????????? "focus":?false,?//?設為true后可以使執行task時焦點聚集在終端,但對編譯c和c++來說,設為true沒有意義???????????????? "panel":?"shared"?//?不同的文件的編譯信息共享一個終端面板 }, "problemMatcher":?"$gcc" }] }
settings.json
{???? "workbench.colorTheme":?"One?Dark?Pro",//主題One?Dark?Pro,如不需要刪除本行???? "git.enabled":?false,//關閉git???? "git.ignoreMissingGitWarning":?true,//忽略git缺失警告???? "terminal.integrated.rendererType":?"dom",???? "breadcrumbs.enabled":?true,???? "workbench.iconTheme":?"material-icon-theme",//圖標主題,如不需要刪除本行???? ????"files.defaultLanguage":?"cpp",?//?ctrl+N新建文件后默認的語言???? "editor.formatOnType":?true,?//?輸入時就進行格式化,默認觸發字符較少,分號可以觸發???? "editor.snippetSuggestions":?"top",?//?snippets代碼優先顯示補全???? "code-runner.runInTerminal":?true,?//?設置成false會在“輸出”面板中輸出,無法輸入,建議設true???? "code-runner.executorMap":?{???????? "c":?"cd?$dir?&&?gcc?$fileName?-o?$fileNameWithoutExt.exe?-Wall?-g?-Og?-static-libgcc?-std=c11? &&?$dir$fileNameWithoutExt",???????? "cpp":?"cd?$dir?&&?g++?$fileName?-o?$fileNameWithoutExt.exe?-Wall?-g?-Og?-static-libgcc?-std=c++17? &&?$dir$fileNameWithoutExt" ????},???? "code-runner.saveFileBeforeRun":?true,?//?run?code前保存???? "code-runner.preserveFocus":?false,?//?若為false,run?code后光標會聚焦到終端上。如果需要頻繁輸入數據可設為false???? "code-runner.clearPreviousOutput":?true,?//?每次run?code前清空屬于code?runner的終端消息???? "code-runner.ignoreSelection":?true,? }
HelloWorld:
file->open folder->vscode_onesrc
找到并打開我們的文件夾vscode_onesrc,打開HelloWorld.c點擊右上角的三角形,編譯運行!
Hello World!