1. 程式人生 > 程式設計 >vs code 配置c/c++環境的詳細教程(推薦)

vs code 配置c/c++環境的詳細教程(推薦)

寫在前面的一段話

我這個配置方法反正在win10上是可以用的,我自己的筆記本就是win10的系統。但是在實驗室蹭的學長的主機卻是win7的系統,按道理來說這個配置應該是不分系統的?但是我確實是折騰了好幾天,看了很多部落格的配置方法,也問過稍微會一些的人,沒有一個能解決我問題的,也希望有人能評論解決我的問題,我的vscode問題是c++只能編譯執行無法debug。每次按F5都是一閃而過,無法除錯,再按就顯示除錯程式正在執行。-------2019.5.3
實驗室我把系統換了,用了自己喜歡很久的ubuntu 18.04

vs code 配置c/c++環境

雖然平時比賽要求用的是code blocks,但是很尷尬的是我不喜歡code blocks的那個介面,平時程式設計感覺太白很傷眼睛。再加上最近一直在折騰個人部落格,對於前端,雖然沒基礎,但是還是知道用vs code還不錯。因此,我又開始了瞎折騰的精神。希望平時程式設計也能通過vs code編譯c++,但是正常情況下vs code對c++編譯是很不友好的。所以想要成功編譯c++程式,要通過自己配置。但是我在網上搜到的教程很少有能一次解決我的問題的。所以參考了幾篇部落格後,總結了一下。

2019.8.6 更新文章(更改生成檔案位置)

不需要更改,或者只是為了編譯執行C/C++的可以直接往下看。
這個是Linux的,如果需要windows,可以自己試一試,具體應該不會差太多
因為檔案分配不夠美觀(我用的檔案比較多,導致生成的.o檔案都堆疊在一起,很醜),所以我動了在編譯檔案時將生成的a/a.o檔案更換位置再執行,一開始打算通過命令列命令直接在其他位置生成生成檔案,但是我並沒有找到此類命令,然後發現編譯時執行的命令是這樣的cd "/home/acm/Documents/acm/" && g++ A.cpp -o A && "/home/acm/Documents/acm/"A

。所以我決定在編譯後的命令間加上移動檔案命令mv A /home/acm/Documents/acm/Documents/這樣的話就將生成檔案放在了acm目錄下的Documents資料夾下,不會導致多個a/a.o檔案堆積在acm目錄下。而task.json檔案我沒有找的修改方法,應該可以修改"command"實現,它可以執行指令碼,但是我寫不來。。。所以我是通過修改了code-runner的命令來實現的。下圖為我修改後的vs code

在這裡插入圖片描述

實現方法
安裝code-runner後在settings.json中找到code-runner.executorMap,將其中的cpp修改為"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && mv $fileNameWithoutExt $dir/Documents/$fileNameWithoutExt && $dir/Documents/$fileNameWithoutExt",

其中的Documents是我自己的目錄,請自己修改,其他編譯命令也可以修改
我整個檔案的結構如圖

在這裡插入圖片描述

上面是正常的編譯執行,還要一處就是除錯的生成檔案,這裡修改launch.json即可
更改位置的task.json

{
 // See https://go.microsoft.com/fwlink/?LinkId=733558
 // for the documentation about the tasks.json format
 "version": "2.0.0","command": "g++","args": [
 "-g","-std=c++11",// "${workspaceFolder}/${file}",// "${file}","${workspaceFolder}/${fileBasenameNoExtension}.cpp","-o","${workspaceFolder}/Documents/${fileBasenameNoExtension}.o",],// 編譯命令引數
 "problemMatcher":{
 "owner": "cpp","fileLocation":[
 "relative","${workspaceFolder}/Documents"
 ],"pattern":[
 {
 "regexp": "^([^\\\\s].*)\\\\((\\\\d+,\\\\d+)\\\\):\\\\s*(.*)$","file": 1,"location": 2,//"message": 3
 }
 ]
 },"group": {
 "kind": "build","isDefault": true
 }
}
//"command": "g++",

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": [
 {
 "name": "(gdb) Launch","type": "cppdbg","request": "launch","program": "${workspaceFolder}/Documents/${fileBasenameNoExtension}.o","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}/Documents","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "/usr/bin/gdb","preLaunchTask": "g++","setupCommands": [
 {
 "description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true
 }
 ]
 },]
}
//"program": "${workspaceFolder}/${fileBasenameNoExtension}.o",//"cwd": "${workspaceFolder}",

2019.4.3 更新文章

因為最近有人問我三個檔案裡的c_cpp_properties.json會報錯,我也不知道報錯的具體原因,可能是因為版本更新?幾個月前vscode就可以配置時不需要在加c_cpp_properties.json這個檔案了。對其餘兩個檔案單獨更新一下。也因為最近重灌過電腦,自己重新找教程配置了一遍。
tasks.json

 {
 "version": "2.0.0","tasks": [
 {
 "label": "Build","-Wall","-lm","${file}","${fileDirname}/${fileBasenameNoExtension}.exe"
 ],"presentation": {
 "reveal": "always","echo": false,"focus": true
 },"problemMatcher": {
 "owner": "cpp","fileLocation": "absolute","pattern": {
 "regexp": "^(.*):(\\d+):(\\d+):\\s+(error):\\s+(.*)$","line": 2,"column": 3,"severity": 4,"message": 5
 }
 }
 },{
 "label": "Run","type": "shell","dependsOn": "Build","command": "${fileDirname}/${fileBasenameNoExtension}.exe","problemMatcher": [],"group": {
 "kind": "test","isDefault": true
 }
 }
 ]
}

launch.json

{
 // Use IntelliSense to learn about possible attributes.
 // Hover to view descriptions of existing attributes.
 // For more information,"program": "${fileDirname}/${fileBasenameNoExtension}.exe","cwd": "${workspaceFolder}",//強調一下,我習慣用vscode自帶的終端,所以你不習慣可以改為true
 "MIMode": "gdb","miDebuggerPath": "E:\\vs code\\MinGW\\mingw64\\bin\\gdb.exe","ignoreFailures": true
 }
 ],"preLaunchTask": "Build"
 }
 ]

}

參考部落格

Visual Studio Code (vscode)編譯C++

整理:Visual Studio Code (vscode) 配置C、C++環境/編寫執行C、C++(Windows)

下載Visual Studio Code

下載地址

安裝外掛

可以選擇ctrl+shift+x在商店裡搜尋或者選擇ctrl+shift+p開啟命令框輸入

ext install cpptools

安裝該外掛

cpptools

安裝MinGW-W64,配置環境

據說MinGW已經不更新了?=.=所以安裝MinGW-W64

Windows MinGW DOWNLOAD

在這裡插入圖片描述

安裝過程請注意自己的電腦是32還是64位的,其他的預設就可以了。還要額外注意下自己的下載地址後面要用。

在這裡插入圖片描述

然後開啟我的電腦->屬性->高階系統設定->環境變數

在這裡插入圖片描述

選擇新建,新增剛剛記住的E:\vs code\mingw\mingw64\bin確定後退出,注意這個應該是你自己的安裝地址

檢查一下自己是否安裝配置完成
開啟命令提示符輸入

gcc -v

在這裡插入圖片描述

配置vs code

在這裡插入圖片描述

找一個資料夾作為你的工作區,然後在這個工作區下建立一個新的資料夾,命名為.vscode,注意點是不能缺少的。然後在你建立的.vscode資料夾下建立三個.json檔案,分別為tasks.json,launch.json,c_cpp_properties.json。

配置內容如下:

tasks.json

{
 "version": "2.0.0","args": ["-g","${workspaceRoot}\\${fileBasename}.exe"],"fileLocation": ["relative","${workspaceRoot}"],"pattern": {
 "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$","message": 5
 }
 }
}

launch.json

{
 "version": "0.2.0","configurations": [
 {
 "name": "C++ Launch (GDB)","targetArchitecture": "x86","program": "${workspaceRoot}\\${fileBasename}.exe","miDebuggerPath":"E:/vs code/mingw/mingw64/bin/gdb.exe","cwd": "${workspaceRoot}","externalConsole": true,"preLaunchTask": "g++"   
 }
 ]
 }

c_cpp_properties.json

{
 "configurations": [
 {
 "name": "Win32","includePath": [
 "${workspaceRoot}","E:/vs code/mingw/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++","E:/vs code/mingw/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32","E:/vs code/mingw/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/backward","E:/vs code/mingw/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include","E:/vs code/mingw/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/tr1","E:/vs code/mingw/mingw64/x86_64-w64-mingw32/include"
 ],"defines": [
 "_DEBUG","UNICODE","__GNUC__=6","__cdecl=__attribute__((__cdecl__))"
 ],"intelliSenseMode": "msvc-x64","browse": {
 "path": [
 "${workspaceRoot}","E:/vs code/mingw/mingw64/x86_64-w64-mingw32/include"
 ]
 },"limitSymbolsToIncludedHeaders": true,"databaseFilename": "","compilerPath": "E:\\vs code\\mingw\\mingw64\\bin\\gcc.exe","cStandard": "c11","cppStandard": "c++17"
 }
 ],"version": 4
}

其中尤為需要注意的就是那些安裝位置,配置的時候請參考我的來找到你自己安裝的位置。
還有就是在一些地址輸入不能用\分割要用/或者\\
例如:E:/vs code/mingw/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++

E:/vs code/mingw是我安裝時自己選的資料夾,從mingw64開始均為安裝時自己出現的檔案,所以請不要直接複製貼上,注意自己的安裝位置。

這樣基本就配置完了,測試一下經典的Hello World

#include<iostream>
using namespace std;
int main()
{
 cout<<"Hello World!"<<endl;
 return 0;
}

直接F6執行,或者選擇在return 0處加個斷點再F5,都能成功測試是否配置完成。不過加斷點輸出的那個會比較好看=.=

當然估計在配置過程中問題是少不了的。如果有我未提到的問題,你可以發給我郵件[email protected],我推薦你直接在GitHub的倉庫裡新增issue。因為我不能保證自己能夠徹底的解決,但是在issues裡總有大佬會回答問題的。

到此這篇關於vs code 配置c/c++環境的詳細教程(推薦)的文章就介紹到這了,更多相關vs code 配置c/c++環境內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!