在 Visual Studio Code 中构建一个C++开发环境

个人主页:传送门

背景

有时候需要在Windows上编写C++代码,但是已经习惯了linuxvim + gcc/clang,并且不想安装体积庞大的Visual Studio。本文介绍如何一步步在Windows上使用Visual Studio Code(以下简称VS Code)搭建一个C++的开发调试环境。

安装 VS Code

VS CodeMicrosoft开发的免费、开源、跨平台的文本编辑器。它同时支持WindowsLinuxMacOS等操作系统。它支持调试、内置了Git版本控制功能,同时也具有代码补全、代码重构等功能。还支持扩展程序并在编辑器中内置了扩展程序管理的功能。

安装VS Code很简单,官网下载Windows版本,双击安装。

安装完成之后,通过扩展程序管理搜索安装C/C++扩展。如下:

安装C/C++扩展

安装VIM扩展。如下:

安装VIM扩展

安装完成之后重新加载即可生效。

安装 msys2

利用msys2可以在Windows中使用Linux/Unix软件。msys2提供了一个包管理系统Pacman,可以很方便地安装各种软件。

1. 安装 msys2

msys2官网下载对应的安装程序。注意32位和64位系统的差别。

下载msys2安装包

双击安装,安装完成之后直接运行:


运行msys2

或者从开始菜单运行:


运行msys2

2. 更新包数据库及核心系统包

在打开的Terminal窗口中,输入pacman -Syu:

更新msys2

出现下面情况需要关闭Terminal,再次从开始菜单运行,然后输入pacman -Su更新剩余的部分:

更新msys2中断

更新msys2剩余部分

等待更新完成...

注意点:

  • 可能出现获取错误是由于网络原因,会自动重新尝试,一般会成功。
  • 有可能出现冲突,直接选y
  • 输出更新信息:下载大小、安装大小、净更新大小。输入y更新。
  • 由于网络状况可能需要较长时间。

下面gccclang按需安装!!!

3. 安装 gcc

输入pacman -Ss gcc搜索gcc结果如下:

搜索gcc

选择安装mingw-w64-x86_64-toolchain(64位),输入pacman -S mingw-w64-x86_64-toolchain:

安装gcc

4. 安装 clang

输入pacman -Ss clang搜索clang结果如下:

搜索clang

选择安装mingw-w64-x86_64-clang(64位),输入pacman -S mingw-w64-x86_64-clang:

安装clang

设置 Terminal

Windows上VS Code默认的Terminal为PowerShell。为了使用msys2需要改成msys2bash

选择文件->首选项->设置:

设置

左侧是默认设置,我们需要修改右侧的用户设置来覆盖默认的设置。这里设置了以下值:

  • window.zoomLevel: 窗口缩放,0为不缩放。
  • terminal.integrated.shell.windows: 设置为msys2bash的路径C:\\msys64\\usr\\bin\\bash.exe
  • terminal.integrated.shellArgs.windows: 启动bash的参数,设置为["-i"]表示启动bash后进入交互模式。
  • terminal.integrated.env.windows: 启动bash的环境变量,设置为{ "PATH": "/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/c/Windows/System32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowershell/v1.0/"}

设置完成后,使用Ctrl + `打开的Terminal为bash

编写程序

打开一个空目录,创建main.cpp文件,输入代码。然后g++ -g main.cpp编译,./a.exe运行:

gcc编译

也可以使用clang++ -g main.cpp编译,./a.exe运行:

clang编译

调试程序

VS Code中输入Ctrl + Shift + P,然后选择C/CPP: Edit Configurations:

cpp配置

在与Win32同层次上增加以下配置:

{
            "name": "MinGW",
            "intelliSenseMode": "clang-x64",
            "includePath": [
                "${workspaceRoot}",
                "C:/msys64/mingw64/include",
                "C:/msys64/mingw64/c++/7.3.0",
                "C:/msys64/mingw64/c++/7.3.0/tr1",
                "C:/msys64/mingw64/c++/7.3.0/x86_64-w64-mingw32",
                "C:/msys64/mingw64/x86_64-w64-mingw32/include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "__GNUC__=7",
                "__cdecl=__attribute__((__cdecl__))"
            ],
            "browse": {
                "path": [
                    "C:/msys64/mingw64/lib/*"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        }

主要配置包含路径,宏定义等内容。如下:


mingw配置

然后选择调试->添加配置修改内容如下:

调试配置

变量窗口,监视窗口,调用堆栈,一些控制按钮能完成基本的调试。


调试

库安装

通过msys2的包管理器pacman可以很方便的安装一些库。一般先pacman -Ss查找,找到自己想要安装的指定版本的库,然后通过pacman -S安装。例如下面是如何安装boost库的:

输入pacman -Ss boost查找:

查找boost库

选择安装mingw-w64-x86_64-boost,输入pacman -S mingw-w64-x86_64-boost安装:

安装boost库

使用:


使用boost库

参考资料

  1. GCC & clang on windows with Visual Studio Code + bash terminal + debugging
  2. CppCon 2017: Rong Lu “C++ Development with Visual Studio Code”
  3. MSYS2 homepage
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,302评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,563评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,433评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,628评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,467评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,354评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,777评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,419评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,725评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,768评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,543评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,387评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,794评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,032评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,305评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,741评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,946评论 2 336