1. 程式人生 > >VSCode實現C++程式碼提示、語法高亮、編譯和除錯

VSCode實現C++程式碼提示、語法高亮、編譯和除錯

眾所周知,目前Microsoft Visual Studio 系列還不能遷移到Linux系統,MacOS只能湊和著用用,而且Visual Studio 2017的安裝包的體積增長到了27GB以上,安裝空間需求70GB以上的空間,一個小巧靈活的VS Code對於C++開發者而言更加實用。

一、開發環境

軟體列表如下:
1. Windows Software Development Kit 10.0.15063
2. Microsoft Visual C++ Build Tools 2015
3. Microsoft Visual Studio Code
4. Cppcheck 1.8
5. LLVM 5.0
6. CMake 3.9

Windows SDK的下載地址是:https://developer.microsoft.com/zh-cn/windows/downloads/windows-10-sdk
Microsoft Visual C++ Build Tools 2015 的下載地址是:http://landinghub.visualstudio.com/visual-cpp-build-tools,此安裝包含Windows SDK 8.1和 Windows SDK 10.0.10240,因版本過時,不建議安裝。
Microsoft Visual Studio Code的下載地址是:https://code.visualstudio.com/?wt.mc_id=DX_841432


Cppcheck 1.8的下載地址是:http://cppcheck.sourceforge.net/。這個工具對於C++程式碼檢查、程式碼提示非常有幫助。安裝過程結束後把工具的安裝位置加入Path環境變數。
LLVM 5.0的下載地址是:http://releases.llvm.org/download.html。LLVM自帶的CLang工具對程式碼自動格式化非常有幫助。此外LLVM也是一款很好用的編譯套件,以後也用的上。安裝過程結束後把工具的安裝位置加入Path環境變數。
CMake 3.9的下載地址是:https://cmake.org/download/。CMake是一套自動編譯工具,它提供視覺化的圖形介面,自動生成適用於各種編譯平臺的Makefile。VS Code的C++編譯套件對它有依賴。雖然下文用的是NMake,但CMake留著也不錯。安裝過程結束後把工具的安裝位置加入Path環境變數。

安裝順序按照以上列出軟體的順序進行。

二、配置VS Code

VS Code當前版本沒有C++開發功能,自動提示、程式碼高亮、編譯並除錯這三大核心功能都需要配置,外掛列表也沒有Qt開發相關。所以總體實現思路是首先qmake生成Makefile,然後NMake去編譯,最後是Windows SDK的CDB偵錯程式Debug生成結果。微軟的Visual C++部落格團隊寫過幾篇文章引導使用者使用VS Code開發C++應用程式,連結如下:https://code.visualstudio.com/docs/languages/cpp。文章沒有中文版本,介紹的方法雖然大部分可用,但是用到的某些VS Code外掛已經找不到了。
第一步:安裝cpp-pack外掛。如下圖所示:
這裡寫圖片描述
第二步:安裝codecpp-full外掛,如下圖所示:
這裡寫圖片描述
第三步:解除安裝C/C++ Advanced Lint,這個外掛跟新版本的VS Code有衝突,會導致整個C++開發工作無法進行下去。如下圖所示:
這裡寫圖片描述

三、驗證VSCode 的C++開發功能

第一步:工作目錄。

新建一個資料夾,取名為test。

第二步:用VS Code開啟工作目錄

第三步:配置C++開發環境

點選Tasks->Configure Default Build Task選單,把task.json改成:

{
    "version": "2.0.0",
    "tasks": [{
        "taskName": "test build",
        "type": "shell",
        "command": "${workspaceRoot}/build.bat",
        "group": {
            "kind": "build",
            "isDefault": true
        }
    }]
}

第四步:新建build.bat

寫入build命令列:

@echo off
title test build command
set VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
set QTDIR=C:\Qt\Qt5.9.1\5.9.1\msvc2015_64
set PATH=%PATH%;%QTDIR%\bin
call "%VCINSTALLDIR%\vcvarsall.bat" amd64
nmake

第五步:編寫Makefile。

關於Makefile的編寫規則請參照微軟編寫的《NMAKE Reference》。下面是當前測試工程需要用到的Makefile程式碼:

CFLAGS=
CPPFLAGS=/D "_WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_CRT_SECURE_NO_WARNINGS" /D "_UNICODE" /D "UNICODE" 
LDFLAGS=/LIBPATH:debug/
LIBS=user32.lib kernel32.lib comctl32.lib 

OBJS=main.obj

default: TEST_EXE TEST_DLL

TEST_EXE: $(OBJS)
    @if not exist debug ( mkdir debug )
    @link /nologo /DEBUG /MACHINE:X64 /MANIFEST:NO /OUT:debug\test.exe /PDB:debug\test.pdb /SUBSYSTEM:CONSOLE $(LDFLAGS) $(OBJS) $(LIBS)
    @echo generate executable files finished.

TEST_DLL: $(OBJS)
    @if not exist debug ( mkdir debug )
    @link /nologo /DEBUG /DLL /MACHINE:X64 /MANIFEST:NO /OUT:debug\libtest.dll /IMPLIB:debug\libtest.lib /PDB:debug\libtest.pdb /SUBSYSTEM:WINDOWS $(LDFLAGS) $(OBJS) $(LIBS)
    @echo generate dynamic library finished.

.cpp.obj:
    @if not exist debug ( mkdir debug )
    @cl /nologo /ZI /EHsc /W3 /MDd /W3 /c $(CPPFLAGS) /Fd:debug\ /Fo:debug\ $*.cpp
    @echo compile [email protected] finished.

clean:
    @del /f /s /q *.obj
    @del /f /s /q *.res
    @del /f /s /q *.ilk
    @del /f /s /q *.idb
    @del /f /s /q *.dll
    @del /f /s /q *.exe
    @del /f /s /q *.pdb
    @del /f /s /q *.exp
    @del /f /s /q *.lib
    @if exist debug ( rd /s /q debug )

第六步:在.vscode目錄下新建c_cpp_properties.cpp,

c_cpp_properties.json的程式碼如下:

{
    "configurations": [{
        "name": "msvc2015",
        "browse": {
            "path": [
                "${workspaceRoot}",
                "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include",
                "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/atlmfc/include",
                "C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/ucrt",
                "C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/um",
                "C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/shared"
            ]
        },
        "includePath": [
            "${workspaceRoot}",
            "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include",
            "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/atlmfc/include",
            "C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/ucrt",
            "C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/um",
            "C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/shared"
        ],
        "intelliSenseMode": "msvc-x64"
    }],
    "version": 3
}

這一步配置完成後,VS Code的C++開發功能已經正常工作了。

第七步:新建main.cpp

main.cpp的程式碼如下:

#include <iostream>

int main()
{
    std::cout<<"Hello World for Visual Studio Code C++ "<<std::endl;
    return 0;
}

extern "C" int __declspec(dllexport) get_age()
{
    return 21;
}

第八步:編譯

按下CTRL+SHIFT+B,成功截圖如下:
這裡寫圖片描述

第九步:設定除錯

新建launch.json,寫入以下程式碼:

{
    "version": "0.2.0",
    "configurations": [{
        "name": "(Windows) Launch",
        "type": "cppvsdbg",
        "request": "launch",
        "program": "test.exe",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceRoot}/debug",
        "environment": [],
        "externalConsole": true
    }]
}

下個斷點:
這裡寫圖片描述
接下來就可以直接按下F5了:
這裡寫圖片描述
至此VS Code的C++開發環境設定全部順利完成。