衆所周知VSCode是全宇宙最好用的編輯器 (霧html
配置了好久,今日終於配置完成了,仍是有點麻煩的,本文是爲了方便一些不懂怎麼配置的小白,以及還有一些美化教程。c++
Visual Studio Code是一款免費並且強大的編輯器,你能夠直接在官方進行下載,本文是針對Windows系統進行安裝使用。git
官網:https://code.visualstudio.com/github
下載安裝便可,安裝時候記得勾選添加到環境變量選項。正則表達式
新版VSCode的默認語言是英語,咱們首先將其更改成中文shell
按快捷鍵Ctrl+Shift+P打開命令窗口,搜索>langjson
而後打開下面這個選項Configure Display Language,以下圖windows
打開後而後以下圖編輯器
"en"即爲英語,將其修改成"zh-CN"而後從新啓動VSCode便可。ide
如果沒有成功修改語言,則是沒有下載中文語言包,咱們能夠在擴展中搜索Chinese,安裝第一個擴展再次從新啓動便可。以下圖
首先咱們先試試如何建立一個C++文件,左上角打開文件夾,打開一個文件,注意文件路徑不能有中文,以下圖
而後就能夠在文件夾內新建文件了。以下圖
而後就能夠新建一個cpp文件進行編寫,但進行到這裏僅僅只是可以編寫代碼而已,由於VSCode並非一個IDE,他只是一個編輯器,因此咱們還得本身配置編譯環境,咱們首先在擴展商店安裝以下擴展(不是必定要安裝下面的,可是我推薦都安裝一下)。
具體每一個擴展的功能都在安裝界面有介紹。
而後咱們安裝編譯環境,這裏我安裝的是MingGW64+Clang。
Clang下載好了之後安裝。安裝時選擇Add LLVM to the system PATH for all users。安裝完了之後可能會彈出cmd說MSVC integration install failed。這個是由於Clang默認使用的是msvc的工具鏈,而咱們安裝了MinGW,因此就不用管這個提示。
MinGW安裝的時候Architecture選x86_64,裝好之後把東西所有複製到Clang的文件夾裏去,還要本身把MinGW的bin文件夾加到環境變量path中。
打開CMD輸入clang -v若是顯示版本號即安裝完成了。以下圖
而後就能夠進行編譯了,咱們編寫了一個hello.cpp,而後按下面的操做進行編譯運行
運行成功,此時咱們以及能夠經過VSCode進行C/C++代碼編寫以及運行。
後面咱們能夠配置幾個.json文件修改一些編譯參數。
先建立一個你打算存放代碼的文件夾(稱做工做區),路徑不能含有中文和空格。而後打開VS Code,選打開文件夾,選擇剛纔那個文件夾,點VS Code上的新建文件夾,名稱爲.vscode,而後建立 launch.json,tasks.json,settings.json,c_cpp_properties.json放到.vscode文件夾下,注意在VSCode進行建立.vscode文件夾,至於爲何你能夠試試直接在文件中建立(Windows不支持文件夾開頭爲.)。
以下圖
launch.json代碼:
該文件除stopAtEntry可根據本身喜愛修改外,無需更改。除非你不用windows,則能夠用llvm調試
// 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": "${workspaceRoot}", // 調試程序時的工做目錄 "environment": [], // (環境變量?) "externalConsole": true, // 調試時是否顯示控制檯窗口,通常設置爲true顯示控制檯 "MIMode": "gdb", // 指定鏈接的調試器,能夠爲gdb或lldb。但目前lldb在windows下沒有預編譯好的版本。 "miDebuggerPath": "gdb.exe", // 調試器路徑。 "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": false } ], "preLaunchTask": "Compile" // 調試會話開始前執行的任務,通常爲編譯程序。與tasks.json的taskName相對應 } ] }
tasks.json代碼:
該文件reveal可根據本身喜愛修改,-std根據本身的狀況修改。若是不想要額外警告,把-Wall那一條刪去。
若是使用Clang編譯C語言,把command的值改爲clang。
若是使用MinGW,編譯C用gcc,編譯c++用g++,並把-target和-fcolor那兩條刪去。
// https://code.visualstudio.com/docs/editor/tasks { "version": "2.0.0", "tasks": [ { "taskName": "Compile", // 任務名稱,與launch.json的preLaunchTask相對應 "command": "clang++", // 若是用MinGW,編譯C用gcc,編譯c++用g++ "args": [ "${file}", "-o", // 指定輸出文件名,不加該參數則默認輸出a.exe "${fileDirname}/${fileBasenameNoExtension}.exe", "-g", // 生成和調試有關的信息 "-Og", "-Wall", // 開啓額外警告 "-static-libgcc", // 靜態連接 "-fcolor-diagnostics", "--target=x86_64-w64-mingw", // 默認target爲msvc,不加這一條就會找不到頭文件 "-std=c++1z" // c++1z即c++17,C語言最新標準爲c11,或根據本身的須要進行修改 ], // 編譯命令參數 "type": "shell", "group": { "kind": "build", "isDefault": true // 設爲false可作到一個tasks.json配置多個編譯指令,須要本身修改本文件,我這裏很少提 }, "presentation": { "echo": true, "reveal": "silent", // 設置是否在「終端」中顯示編譯信息,能夠爲always,silent,never。一些錯誤提示也在這裏,可是由於有靜態檢測,我就設爲silent了。 "focus": false, "panel": "shared" // 不一樣的文件的編譯信息共享一個終端面板 }, "problemMatcher": { "owner": "cpp", "fileLocation": [ "relative", "/" ], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", // 正則表達式,用於描述在「問題」欄中顯示的信息。 "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } // 1.11.0的更新日誌裏說能夠直接寫"problemMatcher": "$gcc",可是我試了一下不行。 } ] }
settings.json代碼:
若是你沒有合併Clang和MinGW,則該文件中頭文件的路徑必需修改爲MinGW的路徑,不然Lint無效。版本號(這裏是7和7.1.0)若是不一樣,也要修改。輸gcc -v能夠看到)
Windows下的路徑爲反斜槓,本來應使用兩個反斜槓來轉義,但直接用斜槓在VS Code中也接受
// 將設置放入此文件中以覆蓋默認值和用戶設置。 { "files.defaultLanguage": "c", // ctrl+N新建文件後默認的語言 "c-cpp-flylint.cppcheck.enable": false, "c-cpp-flylint.flexelint.enable": false, "c-cpp-flylint.run": "onType", // 此選項貌似不起做用 "c-cpp-flylint.clang.includePaths": [ "${workspaceRoot}", "C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include/c++", "C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include/c++/x86_64-w64-mingw32", "C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include/c++/backward", "C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include", "C:/llvm/include", "C:/llvm/x86_64-w64-mingw32/include", "C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include-fixed" ], "c-cpp-flylint.clang.defines": [ "_DEBUG", "UNICODE", "__GNUC__=7", "__cdecl=__attribute__((__cdecl__))" ], "c-cpp-flylint.standard": [ "c11", // 若是你想要使用c89,就本身改 "c++1z" // c++1z即c++17 ], "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++1z && $dir$fileNameWithoutExt" }, "code-runner.saveFileBeforeRun": true, "C_Cpp.clang_format_sortIncludes": true, "C_Cpp.errorSquiggles": "Disabled" }
c_cpp_properties.json代碼:
若是你沒有合併Clang和MinGW,則該文件中頭文件的路徑必需修改爲MinGW的路徑,不然IntelliSense無效。版本號若是不一樣,也要修改。
{ "configurations": [ { "name": "Win32", "intelliSenseMode": "clang-x64", "includePath": [ "${workspaceRoot}", "C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include/c++", "C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include/c++/x86_64-w64-mingw32", "C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include/c++/backward", "C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include", "C:/llvm/include", "C:/llvm/x86_64-w64-mingw32/include", "C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include-fixed" ], "defines": [ "_DEBUG", "UNICODE", "__GNUC__=7", "__cdecl=__attribute__((__cdecl__))" ], "browse": { "path": [ "C:/llvm/x86_64-w64-mingw32/include", "C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include", "C:/llvm/lib/gcc/x86_64-w64-mingw32/7.1.0/include-fixed", "C:/llvm/include/*", "${workspaceRoot}" ], "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" } } ], "version": 2 }
而後就能夠在工做區進行編寫代碼了。
關於.exe,這樣編寫下來確定會有不少.exe文件,會佔空間,雖然可能佔不了多少空間,但更重要的是會和代碼夾雜在一塊兒,很是不方便查找代碼,我提供下面兩個方法快速刪除.exe文件
第一種方法是把生成的文件的目錄指定到一個特定的目錄,裏面都放的是exe。修改一下json文件不難作到。
第二種方法是在cmd下輸一條刪除該目錄及子目錄下全部exe的命令:del /q /s *.exe,
不太小心不要把路徑寫錯了
第三種方法,到工做區的目錄下搜索*.exe就都出來了。