VSCode实现C++代码提示语法高亮编译和调试

Posted 岬淢箫声

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 $@ 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++开发环境设置全部顺利完成。

以上是关于VSCode实现C++代码提示语法高亮编译和调试的主要内容,如果未能解决你的问题,请参考以下文章

在vscode中编写vue代码,new Vue还有其他vue语法都没有代码补全和提示,该怎么设置?

vscode中vue代码高亮用啥插件

你不知道的 VSCode 代码高亮原理

C++再谈vscode界面调试C++程序(linux) - 知识点目录

Scintilla开源库使用指南

vscode 远程连接 docker 容器进行 C++ 代码调试实践