目錄
DES:
Steps
11.配置launch.json
12.tasks.json
13. c_cpp_properties.json
補充:使用第三方庫
總結&筆記:
背景知識
ref
DES:
安裝配置VS code C++ 編譯器,運作helloworld
Steps
1.VS Code 僅為文本編輯器,沒有編譯執行功能,要安裝編譯器。
2. 下載下傳安裝MinGW-w64
3. 打開vpn連接配接,啟動安裝
4.安裝完啟動,左側all package,選擇
- mingw32-gcc.bin(c語言檔案編譯器)
- mingw32-gcc-g++.bin(c++語言編譯器)
- mingw32-gdb.bin(調試編譯後檔案)
或者直接選擇相應的編譯配置,注意看description
5.選擇好後選擇applychange,等待下載下傳完畢
6.配置環境變量:
右鍵我的電腦->屬性->右邊欄進階系統設定
環境變量->
系統變量->path->編輯->
選擇MinGW/bin->确定
重新開機電腦
7.驗證
打開cmd 輸入g++ -v
有出現版本資訊
則安裝成功
8.打開vscode,下載下傳c++插件
9.建立.cpp檔案,helloworld
10.按快捷鍵Ctrl+Shift+P調出指令面闆,輸入C/C++,選擇“Edit Configurations(UI)
修改位址
11.配置launch.json
左邊欄選擇運作和調試->launch.json
launch.json 是用于運作 ( run ) 和調試 ( debug ) 的配置檔案,可以指定語言環境,指定調試類型等等内容。
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch", // 配置名稱,将會在啟動配置的下拉菜單中顯示
"type": "cppdbg", // 配置類型,這裡隻能為cppdbg
"request": "launch", // 請求配置類型,可以為launch(啟動)或attach(附加)
"program": "${workspaceFolder}//${fileBasenameNoExtension}.exe",// 将要進行調試的程式的路徑
"args": [], // 程式調試時傳遞給程式的指令行參數,一般設為空即可
"stopAtEntry": false, // 設為true時程式将暫停在程式入口處,一般設定為false
"cwd": "${workspaceFolder}", // 調試程式時的工作目錄,一般為${workspaceFolder}即代碼所在目錄
"environment": [],
"externalConsole": true, // 調試時是否顯示控制台視窗,一般設定為true顯示控制台
"MIMode": "gdb",
"miDebuggerPath": "D:/MinGW/bin/gdb.exe", // miDebugger的路徑,注意這裡要與MinGw的路徑對應
"preLaunchTask": "g++", // 調試會話開始前執行的任務,一般為編譯程式,c++為g++, c為gcc
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
12.tasks.json
tasks.json 是在 vscode 中輔助程式編譯的子產品,可以代你執行類似于在指令行輸入 “gcc hello.c -o hello” 指令的操作,你隻要在圖形界面下操作即可生成可執行檔案。
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",//預設配置,實質為在win的端口使用shell指令
"label": "g++",//任務的名稱,可以修改,但一定要和launch中的"preLaunchTask"項保持一緻
"command": "D:/MinGw/bin/g++.exe",//
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-std=c++17"//支援C++17的版本
],
"options": {
"cwd": "D:/MinGw/bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "編譯器: D:/MinGw/bin/g++.exe"//一些描述性資訊
}
]
}
13. c_cpp_properties.json
c_cpp_properties.json 主要用來設定包含頭檔案的路徑,設定 C/C++ 支援的版本号等等
{
"configurations": [
{
"name": "Win32", // 配置名稱可随意更改
"includePath": [ //運作項目包含.h頭檔案的目錄,
"${workspaceFolder}/**"
//此處會比對工作檔案下的所有檔案
], //添加"compilerPath"後,系統include路徑可不寫明
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "D:/MinGw/bin/g++.exe",//編譯器的路徑
"cStandard": "c17",//C标準的版本
"cppStandard": "c++17",//C++标準的版本
"intelliSenseMode": "${default}"
}
],
"version": 4
}
14.按F5啟動編譯和運作
運作結果
補充:使用第三方庫
在vscode使用中如果想使用自定義的函數庫或者第三方庫需要對tasks和c_cpp_properties.json中的路徑進行配置。
c_cpp_properties.json
{
"configurations": [
{
"name": "Win32", // 配置名稱可随意更改
"includePath": [ //運作項目包含.h頭檔案的目錄,在此處添加外部頭檔案路徑
"${workspaceFolder}/**",
"C:/test" //外部路徑
//此處會比對工作檔案下的所有檔案
], //添加"compilerPath"後,系統include路徑可不寫明
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "D:/MinGw/bin/g++.exe",//編譯器的路徑
"cStandard": "c17",//C标準的版本
"cppStandard": "c++17",//C++标準的版本
"intelliSenseMode": "${default}"
}
],
"version": 4
}
tasks.json
使用 “-I” include 頭檔案以及源檔案路徑(若函數定義與聲明不在一起)。
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++build",
"command": "D:/MinGw/bin/g++.exe",
"args": [
"-g",
"${file}",
"-I",//引入外部頭檔案
"F:\\C++\\headfile",
"F:\\C++\\headfile\\hello.cpp",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-std=c++17"
],
"options": {
"cwd": "D:/MinGw/bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "編譯器: D:/MinGw/bin/g++.exe"
}
]
}
參數解讀:
gcc帶不同參數的含義:"-g"産生調試資訊,"-c"編譯中間目标檔案,"-I"指定連結庫,"-o"生成指定命名的可執行檔案
總結&筆記:
相關代碼:
${workspaceFolder} :表示目前workspace檔案夾路徑,也即/home/Coding/Test
${workspaceRootFolderName}:表示workspace的檔案夾名,也即Test
${file}:檔案自身的絕對路徑,也即/home/Coding/Test/.vscode/tasks.json
${relativeFile}:檔案在workspace中的路徑,也即.vscode/tasks.json
${fileBasenameNoExtension}:目前檔案的檔案名,不帶字尾,也即tasks
${fileBasename}:目前檔案的檔案名,tasks.json
${fileDirname}:檔案所在的檔案夾路徑,也即/home/Coding/Test/.vscode
${fileExtname}:目前檔案的字尾,也即.json
${lineNumber}:目前檔案光标所在的行号
${env:PATH}:系統中的環境變量
背景知識
gcc
GCC:GNU Compiler Collection(GUN 編譯器集合),它可以編譯C、C++、JAV、Fortran、Pascal、Object-C、Ada等語言。
g++
g++是GCC中的GUN C++ Compiler(C++編譯器)
ref
【c++】VSCode配置 c++ 環境(小白教程)
g++以及gcc的差別
GCC 參數詳解
使用 VS Code 搭建輕量美觀的 C/C++開發環境
launch.json / tasks.json / c_cpp_properties.json 解析 配置檔案 C++ VSCode
VSCode配置C/C++并添加非工作區頭檔案