准備
安裝 MinGw-w64
離線文件下載:網盤鏈接,提取碼:a3mk
具體說明細節和安裝體驗可以在《⑨也懂系列:MinGW-w64安裝教程》這里查看。這里只記錄一下安裝設置和變量設置。
如果剛 Next 就出現 Cannot download reposytory.txt[0]
錯誤,可以嘗試關閉殺毒軟件(包括 Windows Defender),並以管理員方式運行。
安裝設置說明
- Version:GCC 版本,若無特殊需求優選最高
- Architecture:系統架構,64 位系統選
x86_64
,32 位選i686
- Threads:操作系統 API,開發 Windows 程序選
win32
,開發 Linux、Unix、Mac OS 等其他 posix 協議的操作系統程序選posix
- Exception:異常處理模型
- 64 位系統
seh
:性能優化好,優選sjlj
:穩定性好- 32 位系統
dwarf
:性能優化好sjlj
:穩定性好
- Build revision:修訂版本,保持默認即可
環境變量添加
打開 此電腦-屬性-高級系統設置-高級-環境變量
,在 系統變量-Path
編輯並新建添加你 MinGw-w64 安裝目錄下的 bin 文件夾路徑,例如 C:\Program Files\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin
。保存即可。
可以在 cmd
或 powershell
中運行 gcc --version
判斷是否安裝正確。(安裝正確會輸出版本號)
重啟 VS Code。
VS Code
這里需要先注意的是,這里的所有配置都是基於一個工作區(文件夾)的(因為編輯器編譯調試需要配置文件),當然你也可以直接打開文件夾。但若要直接編譯 .c&.cpp
文件,可以直接執行 ~gcc {.c}
, ~g++ {.cpp}
進行編譯。
先新建並打開你的工作(代碼運行)區。
這里還需要注意的是,添加好環境變量后一定要重啟 VS Code。必須退出后重新啟動,否則編輯器無法識別編譯指令。
C/C++ 拓展
C/C++ 拓展供了針對 C/C++ 的 IntelliSense 與調試等功能,搜索「C/C++」即可直接安裝。
如果只是 Code Runner 簡單的ACM解題運行的話配置下面這個即可
Ctrl+Shift+P
打開命令面板,運行 C/Cpp: Edit configurations
,插件會在當前目錄下創建 .vscode/c_cpp_properties.json
配置文件,只針對本次的項目。
若你系統已安裝 Visual Studio,它會自動將編譯器等設置鏈接過去,但我們這不需要它。可以參考以下配置:
{
"configurations": [
{
"name": "MinGW",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "{your_mingw-w64_bin_gcc.exe_path}",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
上面的 {your_mingw-w64_bin_gcc.exe_path}
替換成你需要的編譯器路徑。例如:
- gcc:
C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/gcc.exe
- g++:
C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/g++.exe
- (
/
,\\
都是可行的)
關於庫文件設置,C/C++ 擴展已經可以通過 compilerPath
自動推斷頭文件以及庫文件所在的目錄,所以無需手動配置。
編譯與調試
配置好上述文件后,可以先寫一段 C/C++ 代碼,測試編譯並調試一下。(以下所有展示的配置只適用於單文件的編譯並調試)
#include <stdio.h>
int main() {
printf("hello world");
return 0;
}
編譯設置:tasks.json
編譯之前,需要先創建 .vscode/tasks.json
(無需手動創建)。這個配置文件提供命令行構建配置,讓編譯器調用然后終端執行。
Ctrl+Shift+P
打開命令面板,運行 Tasks: Configure Task
,選擇 使用模板創建 tasks.json 文件
,選擇 Others 運行任意外部命令的示例
。至此,編輯器會生成 .vscode/tasks.json
文件。編輯文件,例如:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
// 任務標簽名
"label": "compile",
// 任務類型
"type": "shell",
// 編譯器選擇
"command": "gcc",
// 編譯預執行的命令集
"args": [
"-g",
"\"${file}\"",
"-o",
"\"${fileDirname}\\${fileBasenameNoExtension}\""
],
// 任務輸出配置
"presentation": {
"reveal": "always",
"panel": "shared",
"focus": false,
"echo": true
},
// 任務所屬組名
"group": {
"kind": "build",
"isDefault": true
},
// 編譯問題輸出匹配配置
"problemMatcher": {
"owner": "cpp",
"fileLocation": "absolute",
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
]
}
簡單地注釋了一下每一個配置的目的,具體可以在 Tasks in Visual Studio Code 查看。
以上是 gcc 編譯器配置,若要編譯 C++ ,將 command
改為 g++
即可。
至此,編輯器的編譯設置已經完成了。可以在 Ctrl+Shift+P
中輸入 Tasks: Run Build Task
進行編譯,但只會生成 exe 文件,並不會啟動調試。
調試設置:launch.json
光編譯在有些時候肯定是不夠的,那就需要調試功能了。就是所謂的 Debug 。
Ctrl+Shift+P
打開命令面板,輸入 Debug: Open launch.json
,選擇 C++ (GDB/LLDB)
,編輯器會創建調試配置文件 .vscode/launch.json
。但需要稍加修改,例如(基於 MinGW-w64 的 GDB):
{
// 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": "debug",
// 調試器類型
"type": "cppdbg",
// 請求類型
"request": "launch",
// 調試的可執行文件(tasks.json 中配置的編譯輸出的文件)
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
// 調試參數
"args": [],
"stopAtEntry": false,
// 當前工作區
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "{your_mingw-w64_bin_gdb.exe_path}",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
// 調試前啟動的任務
// 要與 tasks.json 中配置的 label 一致
// 總是要先編譯再調試的嘛
"preLaunchTask": "compile",
}
]
}
上面的 {your_mingw-w64_bin_gdb.exe_path}
替換成你 MinGW-w64-GDB 路徑。例如:
C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/gdb.exe
簡單注釋了一下,更多可以在 Debugging in Visual Studio Code 查看。
測試代碼
至此,基本配置已全部完成。可以按 F5
開始調試代碼。或者也可以在 VS Code 的調試界面點擊左上角按鈕進行調試。
另外
Code Runner 拓展
另外,畢竟都用 VS Code 這類輕量編輯器寫代碼了嘛,那就推薦一款超好用的代碼調試工具:Code Runner。
它可以讓我們直接在 VS Code 運行各種語言代碼,缺點就是,它很輕量,不支持復雜工程編譯。 搜索「Code Runner」即可直接安裝。接下來,我們需要設置一下 Code Runner 。
進入 VS Code 設置,右上角坐起第二個按鈕(打開設置),在右欄中輸入相關設置的 json 即可直接進行設置替換。
// 在終端中運行編譯命令,否則我們無法與程序通過標准輸入交互
"code-runner.runInTerminal": true,
// 如果你全局設置中的默認終端是 WSL 之類的,那么可以在工作區設置中改回 PowerShell
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
// 運行代碼之前清除之前的輸出
"code-runner.clearPreviousOutput": true,
// 開啟這個后在運行編譯命令之前會自動 cd 至文件所在目錄
"code-runner.fileDirectoryAsCwd": true,
// 因為上面那個選項會自動 cd,所以我刪除了默認編譯命令中的 cd 語句
// 這里只保留了 C 和 C++ 的編譯命令,有需要其他語言的請自行添加
"code-runner.executorMap": {
"c": "gcc $fileName -o $fileNameWithoutExt && .\\$fileNameWithoutExt",
"cpp": "g++ $fileName -o $fileNameWithoutExt && .\\$fileNameWithoutExt",
},
// 運行代碼后切換焦點至終端,方便直接輸入測試數據
"code-runner.preserveFocus": false,
// 在運行代碼之前保存文件
"code-runner.saveFileBeforeRun": true,
如果沒有特殊要求,編輯保存即可。
然后我們就可以直接在代碼界面按下 Ctrl+Alt+N
即可進行編譯調試輸出,或者也可以直接 右鍵-Run Code。
快速編輯
- 在
文件
->首選項
->用戶代碼片段
->cpp.json
中添加
{
"codeforce": {
"prefix": "cf",
"body": [
"// Author : RioTian",
"// Time : ${CURRENT_YEAR_SHORT}/${CURRENT_MONTH}/${CURRENT_DATE}",
"#include <bits/stdc++.h>",
"using namespace std;",
"typedef long long ll;",
"int main() {",
" // freopen(\"in.txt\",\"r\",stdin);",
" ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);",
" $0",
"}"
],
"description": "cf"
},
"filein": {
"prefix": "in",
"body": [
"freopen(\"in.txt\", \"r\", stdin);"
],
"description": "in"
},
}
VS Code 代碼格式化工具clang-format:[click here](./VS Code 代碼格式化工具clang-format.md)
字體修改
方法轉自:wutaoの博客
下載安裝想要更換的字體,這里以 Fira Code 字體為例。
Fira Code 字體的下載地址:https://github.com/tonsky/FiraCode
下載解壓后安裝字體,windows 可以選擇 ttf 文件夾,安裝里面的全部字體。
打開 VSC,點擊左下角的圖標,選擇 Settings,然后搜索font,在 Font Family 加上 “Fira Code”。
重啟 VS code 就能看到字體設置成功了。
注:
settings 中 Font Size 可以修改字體大小
Font Ligatures 啟用連字
Font Size 控制字號
Font Weight 控制字體粗細
后日談
為什么要配置 Windows VS Code 的 C/C++ 開發環境呢,總的來說還是想要輕量。目前為止的 C 程序完全用不着 VS 這么龐大的 IDE 寫(只有在認知實習任務中被要求寫地鐵項目),盡管刷刷 ACM 題VS很爽。但其實只需要輕量的 VS Code (顏值高😂) 就夠了(而且比賽中是不被允許使用VSC的)。
現在很多 ICPC 區域賽都支持VS Code了
參考
配置文件代碼來自 https://blessing.studio/。