VScode下安裝C\C++編譯環境
阿新 • • 發佈:2018-11-10
下載mingw-w64:https://sourceforge.net/projects/mingw-w64/
安裝C/C++外掛
工作區下新建.vscode資料夾,新建並配置四個.json檔案
C++:
c_cpp_properties.json
{ "configurations": [ { "name": "MinGW", "intelliSenseMode": "clang-x64", "compilerPath": "F:/mingw/mingw64/bin/gcc.exe", "includePath": [ "${workspaceFolder}" ], "defines": [], "browse": { "path": [ "${workspaceFolder}" ], "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" }, "cStandard": "c11", "cppStandard": "c++17" } ], "version": 4 }
launch.json
// https://github.com/Microsoft/vscode-cpptools/blob/master/launch.md { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", // 配置名稱,將會在啟動配置的下拉選單中顯示 "type": "cppdbg", // 配置型別,這裡只能為cppdbg "request": "launch", // 請求配置型別,可以為launch(啟動)或attach(附加) "program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 將要進行除錯的程式的路徑 "args": [], // 程式除錯時傳遞給程式的命令列引數,一般設為空即可 "stopAtEntry": false, // 設為true時程式將暫停在程式入口處,我一般設定為true "cwd": "${workspaceFolder}", // 除錯程式時的工作目錄 "environment": [], // (環境變數?) "externalConsole": true, // 除錯時是否顯示控制檯視窗,一般設定為true顯示控制檯 "internalConsoleOptions": "neverOpen", // 如果不設為neverOpen,除錯時會跳到“除錯控制檯”選項卡,你應該不需要對gdb手動輸命令吧? "MIMode": "gdb", // 指定連線的偵錯程式,可以為gdb或lldb。但目前lldb在windows下沒有預編譯好的版本。 "miDebuggerPath": "gdb.exe", // 偵錯程式路徑,Windows下字尾不能省略,Linux下則去掉 "setupCommands": [ // 用處未知,模板如此 { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": false } ], "preLaunchTask": "Compile" // 除錯會話開始前執行的任務,一般為編譯程式。與tasks.json的label相對應 } ] }
settings.json
{ "settings": { "files.defaultLanguage": "cpp", // ctrl+N新建檔案後預設的語言 "editor.formatOnType": true, // 輸入時就進行格式化,預設觸發字元較少,分號可以觸發 "editor.snippetSuggestions": "top", // snippets程式碼優先顯示補全 "code-runner.runInTerminal": true, // 設定成false會在“輸出”中輸出,無法輸入 "code-runner.executorMap": { "c": "cd $dir && clang $fileName -o $fileNameWithoutExt.exe -Wall -g -Og -static-libgcc -fcolor-diagnostics --target=x86_64-w64-mingw -std=c11 && $dir$fileNameWithoutExt", "cpp": "cd $dir && clang++ $fileName -o $fileNameWithoutExt.exe -Wall -g -Og -static-libgcc -fcolor-diagnostics --target=x86_64-w64-mingw -std=c++17 && $dir$fileNameWithoutExt" }, // 設定code runner的命令列 "code-runner.saveFileBeforeRun": true, // run code前儲存 "code-runner.preserveFocus": true, // 若為false,run code後游標會聚焦到終端上。如果需要頻繁輸入資料可設為false "code-runner.clearPreviousOutput": false, // 每次run code前清空屬於code runner的終端訊息 "C_Cpp.clang_format_sortIncludes": true, // 格式化時調整include的順序(按字母排序) "C_Cpp.intelliSenseEngine": "Default", // 可以為Default或Tag Parser,後者較老,功能較簡單。具體差別參考cpptools擴充套件文件 "C_Cpp.errorSquiggles": "Disabled", // 因為有clang的lint,所以關掉 "C_Cpp.autocomplete": "Disabled", // 因為有clang的補全,所以關掉 "clang.cxxflags": [ // 控制c++靜態檢測時的引數 "--target=x86_64-w64-mingw", "-std=c++17", "-Wall" ], "clang.completion.enable":true // 效果效果比cpptools要好 } }
tasks.json
// https://code.visualstudio.com/docs/editor/tasks
{
"version": "2.0.0",
"tasks": [
{
"label": "Compile", // 任務名稱,與launch.json的preLaunchTask相對應
"command": "g++", // 要使用的編譯器
"args": [
"${file}",
"-o", // 指定輸出檔名,不加該引數則預設輸出a.exe,Linux下預設a.out
"${fileDirname}/${fileBasenameNoExtension}.exe",
"-g", // 生成和除錯有關的資訊
"-Wall", // 開啟額外警告
"-static-libgcc", // 靜態連結
"-std=c++17" // C語言最新標準為c11,或根據自己的需要進行修改
], // 編譯命令引數
"type": "shell", // 可以為shell或process,前者相當於先開啟shell再輸入命令,後者是直接執行命令
"group": {
"kind": "build",
"isDefault": true // 設為false可做到一個tasks.json配置多個編譯指令,需要自己修改本檔案,我這裡不多提
},
"presentation": {
"echo": true,
"reveal": "always", // 在“終端”中顯示編譯資訊的策略,可以為always,silent,never。具體參見VSC的文件
"focus": false, // 設為true後可以使執行task時焦點聚集在終端,但對編譯c和c++來說,設為true沒有意義
"panel": "shared" // 不同的檔案的編譯資訊共享一個終端面板
}
// "problemMatcher":"$gcc" // 如果你不使用clang,去掉前面的註釋符,並在上一條之後加個逗號。照著我的教程做的不需要改(也可以把這行刪去)
}
]
}
C
c_cpp_properties.json
launch.json
settings.json
tasks.json
參考部落格
https://www.zhihu.com/question/30315894
https://blog.csdn.net/zjwengyidong/article/details/53789533
https://blog.csdn.net/5hongbing/article/details/77620695