徐鬆亮軟體應用教學-基於Visual Studio Code的C語言開發環境搭建
阿新 • • 發佈:2018-12-18
工欲善其事,必先利其器。後續,本博主要帶領大家,會做多種資料演算法和資料結構的實現,比如說記憶體管理,排序,三次樣條,二叉樹,九宮格,蟻群演算法。。。這些主要用C語言來實現。雖然其他語言有現成的庫,但因為本人主要擅長的是做嵌入式產品開發,目前大多數嵌入式晶片資源仍然有限,主流的開發語言仍然是C語言,所以,我們當前還是以C語言為主,逐步會融入python等。
目錄
一,Visual Studio Code簡介
-
Visual Studio Code是什麼
- 第一眼看到它,千萬別以為他是Visual Studio(微軟的綜合性多語言整合開發環境,安裝要幾個G,費用昂貴)!!!
- Visual Studio Code也是微軟出品,開源免費,跨平臺(linux,MAC,windows)
- 可按需安裝外掛,自己製作好用的IDE(整合開發環境)。
- 因為支援外掛的安裝,可以開發python,C,C++,Java,PHP。。。語言的開發。
-
類似的程式編輯軟體:
- 注意:不只是下面這些,只是羅列部分,藍色為我本人常用。
- Notepad++
- Emacs
- Vim
- Sublime Text3
- UltraEdit
- eclipse
- source insight
-
為什麼選擇Visual Studio Code
- 最先宣告的是,所有編輯軟體存在既有價值,如果已經熟悉哪種軟體,繼續使用即可,沒必要一定分出好壞。
- 微軟出品,大品牌,品質穩定性值得信賴。
- 免費,開源,爽的不要不要的。
- 多外掛安裝,按需構建IDE,簡單方便。
二,Cygwin的安裝
-
為什麼選擇Cygwin
- 基於Windows的C語言編譯環境,當前主要有下面三種
- Visual Studio:好用沒話說,就是太大,安裝幾個G,而且常規使用不能用於嵌入式,商業收費。
- MinGW:如果只是基於Windows開發,不錯的選擇,而且執行速度快。
- Cygwin:相當於在windows環境中建立一套linux系統,執行速度略低於MinGW(所謂的慢就我們做這點程式碼,也是沒有任何感覺的),但是因為其跨平臺,本人還要做嵌入式的編譯,如ESP8266,嵌入式linux產品等,所以它是我的不二選擇。
- 基於Windows的C語言編譯環境,當前主要有下面三種
三,Visual Studio Code的安裝
-
安裝軟體
- 逐步下一步安裝即可,沒有什麼特殊的步驟,一路預設安裝即可,在此不再貼圖。
-
配置語言為中文(本人因為英文不好,所以仍然使用英文版)
- 安裝中文語言包
- View---Command Palette...(或者快捷鍵shift+ctrl+p)
四,外掛的安裝
-
安裝外掛:C/C++
- 功能:這個外掛添加了對c/c++語言的支援,包括程式碼格式化、智慧感知、程式碼瀏覽等,但不包含編譯。
- 安裝截圖:
-
安裝外掛:code runner
- 功能:
- 可以動態的執行選中的程式碼區塊。
- 為多種語言執行程式碼片段或程式碼檔案:C, C++, Java, JavaScript, PHP, Python, Perl, Perl 6, Ruby, Go, Lua, Groovy, PowerShell, BAT/CMD, BASH/SH, F# Script, F# (.NET Core), C# Script, C# (.NET Core), VBScript, TypeScript, CoffeeScript, Scala, Swift, Julia, Crystal, OCaml Script, R, AppleScript, Elixir, Visual Basic .NET, Clojure, Haxe, Objective-C, Rust, Racket, AutoHotkey, AutoIt, Kotlin, Dart, Free Pascal, Haskell, Nim, D, 和定製命令。
- 安裝截圖:
- 功能:
-
安裝外掛:Native Debug
- 功能
- 用於gdb圖形化除錯你的C/C++程式
- 支援GDB和LLDB
- 安裝截圖:
- 功能
五,例項驗證
-
電腦端新建資料夾
- 目的:用於存放工作區,在此我建立如下資料夾。
- 在visual_studio_code_c_test資料夾裡建立code資料夾,在code資料夾建立一個c程式檔案:
- 在xsl_test.c中寫入如下例項程式碼:
-
#include <stdio.h> int main (int argc, char **argv) { int x = 0; int y = 1; printf("xsl test:g_var = %d, l_var = %d.\r\n", x, y); return 0; }
- 目的:用於存放工作區,在此我建立如下資料夾。
-
Visual Studio Code生成一個工作區
- File---Save Workspace as...
- File---Save Workspace as...
-
Visual Studio Code工作區加入資料夾
-
Visual Studio Code生成除錯並修改檔案launch.json
- 此時,會建立出一個launch.json的檔案,我們把如下程式碼替換原始碼
-
{ "version": "0.2.0", "configurations": [ { "name": "C++ Launch (GDB)", // 配置名稱,將會在啟動配置的下拉選單中顯示 "type": "cppdbg", // 配置型別,這裡只能為cppdbg "request": "launch", // 請求配置型別,可以為launch(啟動)或attach(附加) "launchOptionType": "Local", // 偵錯程式啟動型別,這裡只能為Local "targetArchitecture": "x86", // 生成目標架構,一般為x86或x64,可以為x86, arm, arm64, mips, x64, amd64, x86_64 "program": "${file}.exe", // 將要進行除錯的程式的路徑 "miDebuggerPath":"D:/cygwin64/bin/gdb.exe", // miDebugger的路徑,注意這裡要與cygwin/MinGw的路徑對應 "args": ["blackkitty", "1221", "# #"], // 程式除錯時傳遞給程式的命令列引數,一般設為空即可 "stopAtEntry": false, // 設為true時程式將暫停在程式入口處,一般設定為false "cwd": "${workspaceRoot}", // 除錯程式時的工作目錄,一般為${workspaceRoot}即程式碼所在目錄 "externalConsole": true, // 除錯時是否顯示控制檯視窗,一般設定為true顯示控制檯 "preLaunchTask": "gcc" // 除錯會話開始前執行的任務,一般為編譯程式,c++為g++, c為gcc } ] }
- 截圖如下
-
Visual Studio Code生成並修改任務檔案tasks.json
- 進行到此步就可以看到工作區已經生成了tasks.json檔案
- 用如下程式碼替換原tasks.json程式碼
-
{ "version": "2.0.0", "command": "gcc",//對應"preLaunchTask"c++為g++, c為gcc "args": ["-g","${file}","-o","${file}.exe"], // 編譯命令引數 "problemMatcher": { "owner": "cpp", "fileLocation": ["relative", "${workspaceRoot}"], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } }
- 截圖如下:
-
Visual Studio Code執行debug
- 開啟xsl_test.c檔案,設定斷點.
- 執行Debug,如下圖
- 此時,應該可以看到已經進入了模擬環境,如下圖:
- 我們執行以下單指令執行命令,看終端是否能夠顯示列印內容:
- 我們可以看到,終端成功顯示了我們的程式列印內容。
- 到此,可以說明,我們的環境搭建成功。
六,說明與注意事項
- 上面執行的步驟,只是教大家建立最基本的C語言開發環境,並沒有好的框架。
- 上面的兩個配置檔案(launch.json和tasks.json),並不是最優配置,只夠演示使用,所以有很多不合理的地方。