過程
- 安裝vscode
- MinGW-w64 - for 32 and 64 bit Windows 稍微往下翻一下,找到
MinGW-W64 GCC-5.4.0
的x86_64-posix-seh
安裝。爲什麼是這個版本?因爲牛客支持的兩種C++編譯器分別爲C++14(G++5.4.0)
和C++11(glang 3.9)
,這裏保證與牛客相同 - 解壓MinGW壓縮包到你想安裝的路徑。添加bin目錄到環境變量path中:
win10以下的操作系統需要重啓,以生效更改。 - 安裝vscode插件:
- C/C++:又名 cpptools,提供Debug和Format功能
- Code Runner:右鍵即可編譯運行單文件,很方便;但無法Dubug
- 新建工程,在工程目錄下新建.vscode文件夾,在文件夾下新建
launch.json
、tasks.json
、c_cpp_properties.json
文件:
launch.json
內容:
// launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch (GDB)", // 配置名稱,將會在啓動配置的下拉菜單中顯示
"type": "cppdbg", // 配置類型,這裏只能爲cppdbg
"request": "launch", // 請求配置類型,可以爲launch(啓動)或attach(附加)
"targetArchitecture": "x64", // 生成目標架構,一般爲x86或x64
// "program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 將要進行調試的程序的路徑
// "args": [], // 程序調試時傳遞給程序的命令行參數,一般設爲空即可
// 方法一:防止debug時程序一閃而過的方法
// "program": "C:/Windows/System32/cmd.exe",
// "args": [
// "/K",
// "${fileDirname}/${fileBasenameNoExtension}.exe"
// ],
// 方法二:
"program": "C:/Windows/System32/cmd.exe",
"args": [
"/C",
"${fileDirname}/${fileBasenameNoExtension}.exe",
"&",
"pause"
],
"stopAtEntry": false, // 設爲true時程序將暫停在程序入口處,一般設置爲false
"cwd": "${workspaceRoot}", // 調試程序時的工作目錄,一般爲${workspaceRoot}
"externalConsole": true, // 調試時是否顯示控制檯窗口,一般設置爲true顯示控制檯
"internalConsoleOptions": "neverOpen", // 如果不設爲neverOpen,調試時會跳到“調試控制檯”選項卡",
"MIMode": "gdb", // 指定連接的調試器
"miDebuggerPath": "C:/mingw64/bin/gdb.exe", // 調試器路徑
"setupCommands": [
{
"description": "Enable pretty-printing for GDB",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "Compile"
}
]
}
tasks.json
內容:
// tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Compile",
"command": "g++",
"args": [
"${file}", // 指定編譯源代碼文件
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe", // 指定輸出文件名,不加該參數則默認輸出a.exe
"-O0", // 優化級別
"-ggdb3", // 生成和調試有關的信息
"-Wall", // 開啓額外警告
"-static-libgcc", // 靜態鏈接
//"-std=c++17", // 使用c++17標準
"-std=c++14", // 使用c++14標準
"-finput-charset=UTF-8", //輸入編譯器文本編碼 默認爲UTF-8
"-fexec-charset=GB18030", //輸出exe文件的編碼
"-D _USE_MATH_DEFINES"
],
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"absolute",
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always", // 在“終端”中顯示編譯信息的策略,可以爲always,silent,never
"focus": false,
"panel": "shared" // 不同的文件的編譯信息共享一個終端面板
},
}
]
}
c_cpp_properties.json
內容:
{
"configurations": [
{
"name": "MinGW64",
"intelliSenseMode": "gcc-x64",
"compilerPath": "C:/mingw64/bin/g++.exe",
"includePath": [
"${workspaceFolder}"
],
"cppStandard": "c++14"
}
],
"version": 4
}
其他問題
- C++按F5執行程序後一閃而過:
解決:在launch.json中修改program和args
方法一原理:
通過 cmd 的參數 “/K” 來實現
意思是: 是執行完命令後不關閉命令窗口
方法二原理:
這個方法主要是通過cmd的參數 “/C” 來實現,它的效果是:“執行字符串指定的命令然後終止”。此外,還可以通過 ”help cmd“來查看所有可用的參數。
TODO:
- 完善並簡化過程
- 顯示程序運行完的時間(不包括輸入樣例的時間)
- 最好能自動讀取測試樣例文件
- vscode控制檯輸入字符數有上限,太長的測試用例輸入不了,嘗試重定向cin之類的操作
相關/參考鏈接
VSCode C++ 運行結束馬上退出, 窗口一閃而過解決辦法, 不修改代碼 | 文章開頭還給了幾個微軟官方教程,教你如何在vscode上配置c++環境
Get Started with C++ and Mingw-w64 | 官方教程,還教你如何debug
Visual Studio Code 如何編寫運行 C、C++ 程序? - 譚九鼎的回答 - 知乎
Visual Studio Code -> VSCode 開發環境搭建 ---- C/C++ 開發環境搭建 及 代碼運行(code runner 插件)
vscode for c/c++(ACM配置)