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++開發環境設定全部順利完成。