<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          實(shí)踐教程 | 2021年VSCode & C++最全配置攻略

          共 11672字,需瀏覽 24分鐘

           ·

          2021-08-10 10:44

          ↑ 點(diǎn)擊藍(lán)字 關(guān)注極市平臺(tái)

          作者丨派派星
          來源丨CVHub
          編輯丨極市平臺(tái)

          極市導(dǎo)讀

           

          本文將詳細(xì)介紹如何在Wins10系統(tǒng)下配置VSCode的C/C++編譯環(huán)境。 >>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿

          Why VSCode?

          Visual Studio Code(簡稱VS Code)是一款由微軟開發(fā)且跨平臺(tái)(適用于 macOS、Linux 和 Windows)的免費(fèi)源代碼編輯器。該軟件支持語法高亮、代碼自動(dòng)補(bǔ)全(又稱IntelliSense)、代碼重構(gòu)、查看定義功能,并且內(nèi)置了命令行工具和Git版本控制系統(tǒng)。用戶可以更改主題和鍵盤快捷方式實(shí)現(xiàn)個(gè)性化設(shè)置,也可以通過內(nèi)置的擴(kuò)展程序商店安裝擴(kuò)展以拓展軟件功能(輕量化)。本文將詳細(xì)介紹如何在Wins10系統(tǒng)下配置VSCode的C/C++編譯環(huán)境。

          下載VSCode

          直接進(jìn)入官網(wǎng)[1]下載Windows版本,解壓安裝即可。

          VSCode官網(wǎng)

          下載編譯器

          進(jìn)入官網(wǎng)[2]下載MinGW-w64:

          下載完解壓,并將文件夾放置到C:\Program Files(可自定義,嫌麻煩默認(rèn)系統(tǒng)路徑),并添加到環(huán)境變量,用windows的搜索功能(快捷鍵是Windows徽標(biāo)鍵+S)搜索環(huán)境變量:

          把路徑:C:\Program Files\mingw64\bin 添加進(jìn)去:

          最后,再驗(yàn)證下編譯器是否成功配置,打開cmd,輸入gcc --version,回車:

          注:GCC調(diào)試器不支持中文路徑?。。?/p>

          文件配置

          這里大家可以按照這個(gè)文件目錄模板先復(fù)制一遍,后期根據(jù)自己需求更改即可(注意這里.vscode文件夾 . 不能省略):

          其次,我們打開VSCode,鏈接到這個(gè)CODE_C文件夾:

          按照上面的步驟,我們可以先搜索Chinese這個(gè)插件,將VSCode進(jìn)行漢化。安裝完之后點(diǎn)擊右下角的Restart重啟后便可以了:

          同樣地步驟,我們?cè)偎阉鰿/C++插件,點(diǎn)擊安裝即可:

          關(guān)閉VSCode后再重啟,在.vscode文件下新建下列幾個(gè)文件:

          tasks.json

          {  
          "version": "2.0.0",
          "tasks": [
          {//這個(gè)大括號(hào)里是‘構(gòu)建(build)’任務(wù)
          "label": "build", //任務(wù)名稱,可以更改,不過不建議改
          "type": "shell", //任務(wù)類型,process是vsc把預(yù)定義變量和轉(zhuǎn)義解析后直接全部傳給command;shell相當(dāng)于先打開shell再輸入命令,所以args還會(huì)經(jīng)過shell再解析一遍
          "command": "gcc", //編譯命令,這里是gcc,編譯c++的話換成g++
          "args": [ //方括號(hào)里是傳給gcc命令的一系列參數(shù),用于實(shí)現(xiàn)一些功能
          "${file}", //指定要編譯的是當(dāng)前文件
          "-o", //指定輸出文件的路徑和名稱
          "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", //承接上一步的-o,讓可執(zhí)行文件輸出到源碼文件所在的文件夾下的bin文件夾內(nèi),并且讓它的名字和源碼文件相同
          "-g", //生成和調(diào)試有關(guān)的信息
          "-Wall", // 開啟額外警告
          "-static-libgcc", // 靜態(tài)鏈接libgcc
          "-fexec-charset=GBK", // 生成的程序使用GBK編碼,不加這一條會(huì)導(dǎo)致Win下輸出中文亂碼
          "-std=c11", // 語言標(biāo)準(zhǔn),可根據(jù)自己的需要進(jìn)行修改,寫c++要換成c++的語言標(biāo)準(zhǔn),比如c++11
          ],
          "group": { //group表示‘組’,我們可以有很多的task,然后把他們放在一個(gè)‘組’里
          "kind": "build",//表示這一組任務(wù)類型是構(gòu)建
          "isDefault": true//表示這個(gè)任務(wù)是當(dāng)前這組任務(wù)中的默認(rèn)任務(wù)
          },
          "presentation": { //執(zhí)行這個(gè)任務(wù)時(shí)的一些其他設(shè)定
          "echo": true,//表示在執(zhí)行任務(wù)時(shí)在終端要有輸出
          "reveal": "always", //執(zhí)行任務(wù)時(shí)是否跳轉(zhuǎn)到終端面板,可以為always,silent,never
          "focus": false, //設(shè)為true后可以使執(zhí)行task時(shí)焦點(diǎn)聚集在終端,但對(duì)編譯來說,設(shè)為true沒有意義,因?yàn)檫\(yùn)行的時(shí)候才涉及到輸入
          "panel": "new" //每次執(zhí)行這個(gè)task時(shí)都新建一個(gè)終端面板,也可以設(shè)置為shared,共用一個(gè)面板,不過那樣會(huì)出現(xiàn)‘任務(wù)將被終端重用’的提示,比較煩人
          },
          "problemMatcher": "$gcc" //捕捉編譯時(shí)編譯器在終端里顯示的報(bào)錯(cuò)信息,將其顯示在vscode的‘問題’面板里
          },
          {//這個(gè)大括號(hào)里是‘運(yùn)行(run)’任務(wù),一些設(shè)置與上面的構(gòu)建任務(wù)性質(zhì)相同
          "label": "run",
          "type": "shell",
          "dependsOn": "build", //任務(wù)依賴,因?yàn)橐\(yùn)行必須先構(gòu)建,所以執(zhí)行這個(gè)任務(wù)前必須先執(zhí)行build任務(wù),
          "command": "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", //執(zhí)行exe文件,只需要指定這個(gè)exe文件在哪里就好
          "group": {
          "kind": "test", //這一組是‘測試’組,將run任務(wù)放在test組里方便我們用快捷鍵執(zhí)行
          "isDefault": true
          },
          "presentation": {
          "echo": true,
          "reveal": "always",
          "focus": true, //這個(gè)就設(shè)置為true了,運(yùn)行任務(wù)后將焦點(diǎn)聚集到終端,方便進(jìn)行輸入
          "panel": "new"
          }
          }

          ]
          }

          launch.json

          {  
          "version": "0.2.0",
          "configurations": [
          {//這個(gè)大括號(hào)里是我們的‘調(diào)試(Debug)’配置
          "name": "Debug", // 配置名稱
          "type": "cppdbg", // 配置類型,cppdbg對(duì)應(yīng)cpptools提供的調(diào)試功能;可以認(rèn)為此處只能是cppdbg
          "request": "launch", // 請(qǐng)求配置類型,可以為launch(啟動(dòng))或attach(附加)
          "program": "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", // 將要進(jìn)行調(diào)試的程序的路徑
          "args": [], // 程序調(diào)試時(shí)傳遞給程序的命令行參數(shù),這里設(shè)為空即可
          "stopAtEntry": false, // 設(shè)為true時(shí)程序?qū)和T诔绦蛉肟谔?,相?dāng)于在main上打斷點(diǎn)
          "cwd": "${fileDirname}", // 調(diào)試程序時(shí)的工作目錄,此處為源碼文件所在目錄
          "environment": [], // 環(huán)境變量,這里設(shè)為空即可
          "externalConsole": false, // 為true時(shí)使用單獨(dú)的cmd窗口,跳出小黑框;設(shè)為false則是用vscode的內(nèi)置終端,建議用內(nèi)置終端
          "internalConsoleOptions": "neverOpen", // 如果不設(shè)為neverOpen,調(diào)試時(shí)會(huì)跳到“調(diào)試控制臺(tái)”選項(xiàng)卡,新手調(diào)試用不到
          "MIMode": "gdb", // 指定連接的調(diào)試器,gdb是minGW中的調(diào)試程序
          "miDebuggerPath": "C:\\Program Files\\mingw64\\bin\\gdb.exe", // 指定調(diào)試器所在路徑,如果你的minGW裝在別的地方,則要改成你自己的路徑,注意間隔是\\
          "preLaunchTask": "build" // 調(diào)試開始前執(zhí)行的任務(wù),我們?cè)谡{(diào)試前要編譯構(gòu)建。與tasks.json的label相對(duì)應(yīng),名字要一樣
          }]
          }

          注:上面兩個(gè)文件需要大家仔細(xì)閱讀,把文中相應(yīng)的路徑改為你自己電腦上對(duì)應(yīng)的路徑,路徑要統(tǒng)一?。?!

          運(yùn)行調(diào)試C程序

          • 在C_single文件夾下新建exercise文件夾;
          • 在exercise文件下新建bin文件夾;
          • 在exercise文件夾下新建hello.c文件:
          #include <stdio.h>  
          int main()
          {
          char name[10];
          printf("Input your name: ");
          scanf("%s",name);
          printf("Hello,%s,this is your vscode!\n",name);
          return 0;
          }

          安裝運(yùn)行插件,商店搜索“Code Runner”,安裝:

          同樣地步驟再次搜索“C/C++ Clang Command Adapter”,安裝:

          點(diǎn)擊VSCode右下角進(jìn)行運(yùn)行:

          如果出現(xiàn)“Please install clang or check configuration clang.executable”提示,則進(jìn)入這個(gè)網(wǎng)站 clang下載,版本下載最新版本即可。安裝過程中可勾選將其添加到系統(tǒng)環(huán)境路徑下,否則需自行手動(dòng)添加:

          重啟VSCode,再次點(diǎn)擊運(yùn)行按鈕即可:

          運(yùn)行調(diào)試C++程序

          下面我們按這個(gè)工作目錄新建一個(gè)工程:

          需要注意的是,我們要將.vscode這個(gè)文件夾放置到當(dāng)前工作區(qū)目錄下,而不能放到子文件夾目錄下,否則會(huì)出現(xiàn)下面情況:即Bulid finished with error: *** 終端進(jìn)程啟動(dòng)失?。ㄍ顺龃a:-1)

          好了,文件目錄組織好后,我們看下這三個(gè)*.json的配置文件如何編寫,注意閱讀每個(gè)文件,把里面涉及到路徑的地方檢查一遍,一定要與你自己設(shè)置的路徑保持一致:

          tasks.json

          {  
          "version": "2.0.0",
          "tasks": [
          { // 任務(wù)一
          "label": "build", // 任務(wù)名稱
          "type": "shell", // 任務(wù)類型
          "command": "C:\\Program Files\\mingw64\\bin\\g++.exe", // 編譯命令,這里是g++,編譯c的話換成gcc
          "args": [ // 命令所需要用到的參數(shù)
          "-g", // 生成和調(diào)試有關(guān)的信息
          "${file}",
          "-o", // 指定命令輸出文件的路徑和名稱
          "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe",
          "-Wall", // 開啟額外警告
          "-fexec-charset=GBK", // 生成的程序使用GBK編碼,不加這一條會(huì)導(dǎo)致Win下輸出中文亂碼
          "-std=c++11", // 語言標(biāo)準(zhǔn),可根據(jù)自己需要進(jìn)行修改,寫C要換成C語言標(biāo)準(zhǔn),比如C11
          ],
          // "options": { // 可選的編譯命令
          // "cwd": "C:\\Program Files\\mingw64\\bin"
          // },
          "presentation": { // 執(zhí)行這個(gè)任務(wù)的一些其他設(shè)定
          "echo": true, // 表示在執(zhí)行任務(wù)時(shí)在終端要有輸出
          "reveal": "always", // 執(zhí)行任務(wù)時(shí)是否跳轉(zhuǎn)到終端面板,可以為always,silent,never
          "focus": false, // 設(shè)為true后可以使執(zhí)行task時(shí)焦點(diǎn)聚集在終端,但對(duì)編譯來說,設(shè)為true沒有意義,因?yàn)檫\(yùn)行時(shí)才涉及到輸入
          "panel": "new", // 每次執(zhí)行這個(gè)task時(shí)都新建一個(gè)終端面板,也可以設(shè)置為shared,共用一個(gè)面板,不過那樣會(huì)出現(xiàn)‘任務(wù)將被終端重用’的提示,比較煩人
          "showReuseMessage": true,
          "clear": false
          },
          "problemMatcher": [
          "$gcc" // 捕捉編譯時(shí)編譯器在終端里顯示的報(bào)錯(cuò)信息,將其顯示在vscode的‘問題’面板里
          ],
          "group": {
          "kind": "build", // group表示組,我們可以有很多task,然后把他們放在一個(gè)組里,“build”表示這一組任務(wù)類型是構(gòu)建
          "isDefault": true // 表示這個(gè)任務(wù)是當(dāng)前這組任務(wù)中的默認(rèn)任務(wù)
          },
          "detail": "compiler: \"C:\\Program Files\\mingw64\\bin\\g++.exe\""
          },
          { // 任務(wù)二
          "label": "run",
          "type": "shell",
          "dependsOn": "build", // 任務(wù)依賴,因?yàn)檫\(yùn)行必須先構(gòu)建,所以執(zhí)行這個(gè)任務(wù)之前必須先執(zhí)行build任務(wù)
          "command": "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe",
          "group": {
          "kind": "test",
          "isDefault": true
          },
          "presentation": {
          "echo": true,
          "reveal": "always",
          "focus": true, // 這個(gè)就設(shè)置為true了,運(yùn)行任務(wù)后將焦點(diǎn)聚集到終端,方便進(jìn)行輸入
          "panel": "new",
          "showReuseMessage": true,
          "clear": false
          }
          }
          ]
          }

          launch.json

          {  
          // Use IntelliSense to learn about possible attributes.
          // Hover to view descriptions of existing attributes.
          // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
          "version": "0.2.0",
          "configurations": [
          { // 這個(gè)大括號(hào)里是我們的‘Debug’配置
          "name": "debug", // 配置名稱
          "type": "cppdbg", // 配置類型,cppdbg對(duì)應(yīng)cpptools提供的調(diào)試功能
          "request": "launch", // 請(qǐng)求配置類型,可以為launch(啟動(dòng))或attach(附加)
          "program": "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe",
          "args": [],
          "stopAtEntry": false, // 設(shè)置為true時(shí)程序?qū)和T诔绦蛉肟谔?,相?dāng)于在main上打斷點(diǎn),
          "cwd": "${workspaceFolder}", // 調(diào)試程序時(shí)的工作目錄
          "environment": [], // 環(huán)境變量,這里設(shè)置為空即可
          "externalConsole": false, // 為true時(shí)使用單獨(dú)的cmd窗口,跳出小黑框;設(shè)為false則是用vscode內(nèi)置終端,建議使用內(nèi)置終端
          // "internalConsoleOptions": "neverOpen", // 如果不設(shè)為neverOpen,調(diào)試時(shí)會(huì)跳到“調(diào)試控制臺(tái)”選項(xiàng)卡,新手調(diào)試用不到
          "MIMode": "gdb", // 指定連接的調(diào)試器,gdb是minGW中的調(diào)試程序
          "miDebuggerPath": "C:\\Program Files\\mingw64\\bin\\gdb.exe", // 指定調(diào)試器的所在路徑
          "setupCommands": [
          {
          "description": "為 gdb 啟用整齊打印",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
          }
          ],
          "preLaunchTask": "build", // 調(diào)試開始簽執(zhí)行的任務(wù),我們?cè)谡{(diào)試前要編譯構(gòu)建,玉tasks.json的label相對(duì)于,名字要一樣
          },
          ]
          }
          `

          ### settings.json

          `{
          "files.associations": {
          "ostream": "cpp"
          }
          }
          `

          好了,配置完成后,我們?cè)趆ello.cpp文件下填寫hello world腳本:

          `#include <iostream>
          using namespace std;

          int main()
          {
          cout << "Hello, World!";
          return 0;
          }

          腳本寫完,直接點(diǎn)擊右上角的右三角形運(yùn)行按鈕即可:

          這時(shí)候我們發(fā)現(xiàn),編譯生成的.exe可執(zhí)行文件出現(xiàn)在了與當(dāng)前腳本文件下的同級(jí)目錄中,這本身沒什么問題。但是但我們的腳本文件過多時(shí),會(huì)顯得非常冗余,所以我們?cè)诋?dāng)前目錄下新建了個(gè)bin目錄(也可以是build目錄等,這里自己重命名即可),然后我們要做的是將所有生成的.exe文件都放置到里面去,這里提供兩種方法:

          直接通過VSCode自帶的編譯

          按下快捷鍵Ctrl+Shift+B運(yùn)行生成任務(wù),或者直接在工具欄點(diǎn)擊即可:

          選擇.g++程序執(zhí)行編譯操作:

          可以看到,.exe文件跑里面去了

          最后,我們直接按快捷鍵Ctrl+F5或者點(diǎn)擊工具欄運(yùn)行當(dāng)前文件即可:

          更進(jìn)一步地,我們可以設(shè)置快捷鍵的方式去運(yùn)行測試文件:點(diǎn)擊左下角小齒輪->鍵盤快捷方式->搜索任務(wù)->找到運(yùn)行測試任務(wù),點(diǎn)擊左側(cè)加號(hào)添加鍵綁定,這里我們?cè)O(shè)為F4,

          然后回到我們的hello程序頁面,按下F4即可大功告成?。。】偨Y(jié)如下:先用“Ctrl+Shift+B”進(jìn)行源文件的編譯,生成.exe可執(zhí)行文件;再用設(shè)置好的快捷鍵如"F4"運(yùn)行測試文件。

          通過配置Code Runner來編譯

          在.vscode文件夾下新建"settings.json"文件,將以下內(nèi)容復(fù)制進(jìn)去:

          // {  
          // "files.associations": {
          // "ostream": "cpp"
          // },
          // }
          {

          "files.defaultLanguage": "c++", // ctrl+N新建文件后默認(rèn)的語言

          "editor.formatOnType": true, // 輸入分號(hào)(C/C++的語句結(jié)束標(biāo)識(shí))后自動(dòng)格式化當(dāng)前這一行的代碼

          "editor.suggest.snippetsPreventQuickSuggestions": false, // clangd的snippets有很多的跳轉(zhuǎn)點(diǎn),不用這個(gè)就必須手動(dòng)觸發(fā)Intellisense了

          "editor.acceptSuggestionOnEnter": "off", // 我個(gè)人的習(xí)慣,按回車時(shí)一定是真正的換行,只有tab才會(huì)接受Intellisense

          // "editor.snippetSuggestions": "top", // (可選)snippets顯示在補(bǔ)全列表頂端,默認(rèn)是inline



          "code-runner.runInTerminal": true, // 設(shè)置成false會(huì)在“輸出”中輸出,無法輸入

          "code-runner.executorMap": {

          "c": "gcc '$fileName' -o '$fileNameWithoutExt.exe' -Wall -O2 -m64 -lm -static-libgcc -std=c11 -fexec-charset=GBK && &'./$fileNameWithoutExt.exe'",

          "cpp": "g++ '$fileName' -o './/bin//$fileNameWithoutExt.exe' -Wall -O2 -m64 -static-libgcc -std=c++11 -fexec-charset=GBK && &'.//bin//$fileNameWithoutExt.exe'"


          }, //

          "code-runner.saveFileBeforeRun": true, // run code前保存

          "code-runner.preserveFocus": true, // 若為false,run code后光標(biāo)會(huì)聚焦到終端上。如果需要頻繁輸入數(shù)據(jù)可設(shè)為false

          "code-runner.clearPreviousOutput": false, // 每次run code前清空屬于code runner的終端消息,默認(rèn)false

          "code-runner.ignoreSelection": true, // 默認(rèn)為false,效果是鼠標(biāo)選中一塊代碼后可以單獨(dú)執(zhí)行,但C是編譯型語言,不適合這樣用

          "code-runner.fileDirectoryAsCwd": true, // 將code runner終端的工作目錄切換到文件目錄再運(yùn)行,對(duì)依賴cwd的程序產(chǎn)生影響;如果為false,executorMap要加cd $dir

          "C_Cpp.clang_format_sortIncludes": true, // 格式化時(shí)調(diào)整include的順序(按字母排序)

          }

          保存,然后再次點(diǎn)擊右上角的運(yùn)行按鈕即可?,F(xiàn)在,我們便可以愉快的玩耍拉~~~別忘記一鍵三連哦!

          References

          [1]https://code.visualstudio.com/download\
          [2]https://sourceforge.net/projects/mingw-w64/files/

          如果覺得有用,就請(qǐng)分享到朋友圈吧!

          △點(diǎn)擊卡片關(guān)注極市平臺(tái),獲取最新CV干貨

          公眾號(hào)后臺(tái)回復(fù)“CVPR21檢測”獲取CVPR2021目標(biāo)檢測論文下載~


          極市干貨
          深度學(xué)習(xí)環(huán)境搭建:如何配置一臺(tái)深度學(xué)習(xí)工作站?
          實(shí)操教程:OpenVINO2021.4+YOLOX目標(biāo)檢測模型測試部署為什么你的顯卡利用率總是0%?
          算法技巧(trick):圖像分類算法優(yōu)化技巧21個(gè)深度學(xué)習(xí)調(diào)參的實(shí)用技巧


          CV技術(shù)社群邀請(qǐng)函 #

          △長按添加極市小助手
          添加極市小助手微信(ID : cvmart4)

          備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測-深圳)


          即可申請(qǐng)加入極市目標(biāo)檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群


          每月大咖直播分享、真實(shí)項(xiàng)目需求對(duì)接、求職內(nèi)推、算法競賽、干貨資訊匯總、與 10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動(dòng)交流~



          覺得有用麻煩給個(gè)在看啦~  
          瀏覽 81
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  大鸡巴乱伦| 亚洲天堂无码视频 | w超清无码在线观看 | 女人毛片 | 91娇喘白丝 |