首先下載安裝VScode,開源軟件首推官網下載https://code.visualstudio.com/,Linux中使用的話選擇下載.deb文件,以後執行(根據文件名稱自行修改指令)
sudo dpkg -i code_1.42.1-1581432938_amd64.deb
ios
打開VScode,Ctrl+Shift+P,輸入指令Preferences:Language Extensions安裝C/C++模塊
程序員
VScode只是一個文檔的編輯器,自己不具有編譯和調試功能,編譯和調試須要調用外部程序進行,好比GCC編譯器和GDB工具。GCC和GDB在Linux系統中通常會默認安裝,能夠經過以下指令查看版本信息確認是否安裝shell
gcc -v gdb -v
若是都沒有安裝,能夠經過以下指令安裝GCC和GDBjson
GCC官方安裝教程(https://gcc.gnu.org/install/),從源代碼開始生成安裝。
Ubuntu中也可使用以下指令安裝:vim
launch.json和task.json能夠由VScode默認生成再本身調整細節,也能夠本身經過以下命令直接編寫:編輯器
mkdir .vscode cd .vscode vim launch.json vim task.json
筆者學習過程本身隨手寫了以下一個簡單的hello.cpp文件:函數
#include <iostream> using namespace std; void xx(int& a){ ++a; } int main(){ int x=0; while(x<3){ xx(x); } if(x==3) cout<<"Hello World!"<<endl; return 0; }
該程序只是簡單的將x自增到3而後輸出「Hello World!」;
launch.json和task.json則使用默認生成的文件再進行微調:
launch.json文件內容以下:工具
{ // 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": "execute hello world", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build hello world", //必定要和task.json中某一tasks的label標籤內容一致 "miDebuggerPath": "/usr/bin/gdb" } ] }
task.json文件內容以下:學習
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "build hello world", "type": "shell", "command": "make", "args":["-s"] } ] }
task.json中調用了make命令須要makefile文件,內容後續再說明。ui
F5開始調試,Ctrl+F5執行不調試,調試中F5繼續執行,F10執行一步,F11步入函數,Shift+F11跳出函數,Ctrl+Shift+F5從新開始,Shift+F5結束調試。
VScode調試界面說明:
輸出結果:
Makefile關係到了整個工程的編譯規則。一個工程中的源文件不可勝數,而且按類型、功能、模塊分別放在若干個目錄中,Makefile定義了一系列的規則來指定,哪些文件須要先編譯,哪些文件須要後編譯,哪些文件須要從新編譯,甚至於進行更復雜的功能操做,由於Makefile就像一個Shell腳本同樣,其中也能夠執行操做系統的命令。
Makefile帶來的好處就是——「自動化編譯」,一旦寫好,只須要一個make命令,整個工程徹底自動編譯,極大的提升了軟件開發的效率。
make是一個命令工具,是一個解釋makefile中指令的命令工具,例如Linux下的GNU make。
筆者的Makefile文件內容以下:
hello: hello.o g++ hello.o -o hello hello.o:hello.cpp g++ -g -c hello.cpp .PHONY:clean clean: rm -f hello hello.o
targets : prerequisites command
targets是要生成的目標文件,prerequistites是依賴文件,command是生成該文件指定的須要執行的命令。makefile中的第一個targets做爲默認執行目標。通常而言,會以Unix標準Shell(/bin/sh)來執行命令。
其中的依賴關係能夠由gcc自動生成:
.PHONY:clean代表clean是一個僞目標,能夠理解爲一個錨點,在執行make命令時能夠經過"make clean"來調用目標clean的指令。(Ps:clean通常會寫在最後)
1. -n參數按順序輸出全部須要執行的命令但不執行; 2. -s參數會不輸出任何說明的執行全部命令; 3. -w參數會在輸出原有命令的基礎之上輸出訪問推出文件夾的信息.
Ps:以上內容只是筆者在這次搭建過程當中涉及到的內容說明,Makefile還有更多更深的內容須要慢慢了解和學習,做爲一個方便程序員的工具,它具備很是強大的生命力。與此同時也存在不少自動生成Makefile文件的工具,例如Cmake,autotools等,在使用中也會極大方便咱們。 本身手動編寫Makefile雖然耗時更久,可是對於整個過程會有一個更好的把握,在遇到問題須要debug的時候能夠更加駕輕就熟;而合理運用自動化工具,能夠提供更高的效率。魚和熊掌不可兼得,在實際應用中還須要根據狀況自行斷定。