基於VSCode的C/C++編程語言的構建調試環境搭建指南

VScode的C/C++環境配置

安裝VScode

首先下載安裝VScode,開源軟件首推官網下載https://code.visualstudio.com/,Linux中使用的話選擇下載.deb文件,以後執行(根據文件名稱自行修改指令)
sudo dpkg -i code_1.42.1-1581432938_amd64.debios

安裝C/C++插件

打開VScode,Ctrl+Shift+P,輸入指令Preferences:Language Extensions安裝C/C++模塊
程序員

保證已安裝GCC編譯器和GDB工具

VScode只是一個文檔的編輯器,自己不具有編譯和調試功能,編譯和調試須要調用外部程序進行,好比GCC編譯器和GDB工具。GCC和GDB在Linux系統中通常會默認安裝,能夠經過以下指令查看版本信息確認是否安裝shell

gcc -v
gdb -v

若是都沒有安裝,能夠經過以下指令安裝GCC和GDBjson

GCC安裝

GCC官方安裝教程(https://gcc.gnu.org/install/),從源代碼開始生成安裝。
Ubuntu中也可使用以下指令安裝:vim

  1. sudo apt install gcc
  2. sudo apt install build-essential

GDB安裝

  1. 下載GDB源碼,官網(http://ftp.gnu.org/gnu/gdb/)自行選擇版本
  2. 下載後用tar -zxvf命令解壓文件
  3. 進入解壓後的文件夾,使用命令./configure生成makefile文件
  4. 執行make指令(耗時較久,耐心等待)
  5. sudo make install

準備源碼以及相關配置文件launch.json和task.json

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

VScode的簡單調試說明

F5開始調試,Ctrl+F5執行不調試,調試中F5繼續執行,F10執行一步,F11步入函數,Shift+F11跳出函數,Ctrl+Shift+F5從新開始,Shift+F5結束調試。
VScode調試界面說明:

輸出結果:

Makefile文件

Makefile概述

Makefile關係到了整個工程的編譯規則。一個工程中的源文件不可勝數,而且按類型、功能、模塊分別放在若干個目錄中,Makefile定義了一系列的規則來指定,哪些文件須要先編譯,哪些文件須要後編譯,哪些文件須要從新編譯,甚至於進行更復雜的功能操做,由於Makefile就像一個Shell腳本同樣,其中也能夠執行操做系統的命令。
Makefile帶來的好處就是——「自動化編譯」,一旦寫好,只須要一個make命令,整個工程徹底自動編譯,極大的提升了軟件開發的效率。
make是一個命令工具,是一個解釋makefile中指令的命令工具,例如Linux下的GNU make。

Makefile簡單實例

筆者的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

Makefile文件說明

targets : prerequisites
    command

targets是要生成的目標文件,prerequistites是依賴文件,command是生成該文件指定的須要執行的命令。makefile中的第一個targets做爲默認執行目標。通常而言,會以Unix標準Shell(/bin/sh)來執行命令。
其中的依賴關係能夠由gcc自動生成:

  1. gcc中-M參數會列出全部的依賴關係
  2. gcc中-MM參數會列出全部不是標準庫的依賴關係.

僞目標

.PHONY:clean代表clean是一個僞目標,能夠理解爲一個錨點,在執行make命令時能夠經過"make clean"來調用目標clean的指令。(Ps:clean通常會寫在最後)

make命令部分參數介紹

1. -n參數按順序輸出全部須要執行的命令但不執行;
2. -s參數會不輸出任何說明的執行全部命令;
3. -w參數會在輸出原有命令的基礎之上輸出訪問推出文件夾的信息.

Ps:以上內容只是筆者在這次搭建過程當中涉及到的內容說明,Makefile還有更多更深的內容須要慢慢了解和學習,做爲一個方便程序員的工具,它具備很是強大的生命力。與此同時也存在不少自動生成Makefile文件的工具,例如Cmake,autotools等,在使用中也會極大方便咱們。 本身手動編寫Makefile雖然耗時更久,可是對於整個過程會有一個更好的把握,在遇到問題須要debug的時候能夠更加駕輕就熟;而合理運用自動化工具,能夠提供更高的效率。魚和熊掌不可兼得,在實際應用中還須要根據狀況自行斷定。

相關文章
相關標籤/搜索