前言

最近想要切换编辑工具,之前工作中使用过 Source Insight,Eclipse,CLion 来写 C++ 代码。目前来说 Source Insight 已经非常古老,只有编写代码还说得过去,编译、调试方面都不行。Eclipse 使用的时间最长,相对来说也比较好用,但是对于 C++11 之后的 C++ 代码实际上支持的并不友好。CLion 是相当棒的编辑工具,但是收费。

相对折中一下 VS Code 是一个比较不错的选择,并且周围很多同事和朋友都在用。本来想在网上找找使用 VS Code 写 C++ 代码的资料,找来找去都非常凌乱,因此在这里我希望自己整理一份使用说明文档。

PC 版本说明

由于我是在 macbook 上安装的,所以这里仅介绍在 macbook 上的使用方法。我的 macbook 版本是12.5

前期准备

安装 brew

我很多工具都是通过 brew 安装的,因此需要在电脑上先安装 brew,关于如何安装 brew 在这里就不做介绍了。安装方法很简单,只是需要等比较长的时间。

安装 VS Code

https://code.visualstudio.com/

在这个地址可以下载最新版本的 VS Code,我下载的压缩包是 VSCode-darwin-universal.zip(我安装的版本是 1.74.3),双击 zip 之后会解压出一个带有 Visual Studio Code 图标的目录,把这个目录剪切到 “应用程序” 就完成安装了。

双击打开 VS Code,看到的是空空如也。

安装插件

安装中文包

在安装 C++ 插件之前可以先安装中文包,对于英文不太熟练的朋友,这个中文包可能会有些帮助。

然后就是使用中文包,使用方法在插件的说明文档中有介绍。

按照描述操作就可以了。设置完语言之后会有提示框要求重启。

安装 C++ 编辑器

C++ 编辑器应该有很多种选择,我还是按照网上查到的文档,安装一个 C++ 编辑器

根据插件的说明,这个插件不包含编译和调试的工具,因此编译和调试工具需要自己安装。macbook 的编译和调试工具我记得是自带的,如果某位朋友电脑上本身没有,那只能找找相应的文档了。

安装 CMake

我参考的文档介绍可以使用 Code Runner 插件,我对这个插件没研究明白。不过在我看来 Code Runner 可能写个代码玩玩还可以,但是真正用在项目上估计比较难。在这里我目前比较推荐使用 CMake 进行编译和调试

在 PC 上安装 CMake

brew install cmake

安装后会在 /opt/homebrew/bin/cmake 目录

然后可以执行一下

cmake --version

如果找不到 cmake 可以尝试执行

/opt/homebrew/bin/cmake --version

如果只能在 /opt/homebrew/bin/cmake --version 执行成功,则需要在 VS Code 中调整一下 CMake 路径,如下图:

在 VS Code 中安装 CMake 插件

编辑、编译和调试代码

建立一个 C++ Demo

我创建的是 demo_c++ 目录,然后在里面建立了 3 个文件。

main.cpp

#include <iostream>
#include "Test.h"int main() {std::cout << "hello, i'm main" << std::endl;Test t;t.print();return 0;
}

Test.h

#ifndef _TEST_H_
#define _TEST_H_
class Test {
public:Test();~Test();void print();
};
#endif

Test.cpp

#include <iostream>
#include "Test.h"Test::Test() {
}
Test::~Test() {
}
void Test::print() {std::cout << "i'm class test" << std::endl;
}

建立 CMakeLists.txt 文件

按照 CMake Tools quick start 的描述,在使用 ⇧⌘P 之后,输入:CMake: Quick Start,然后再输入执行文件的名字,我这里输入的是 demo_c++。

然后选择创建可执行程序,于是会自动创建 CMakeLists.txt,并且会显示如下日志:

PS:在 CMake Tools 里面可以配置 CMake 的一些内容,感兴趣的朋友可以再仔细研究一下。

手工添加 cpp 文件

由于我们的 demo 是两个 cpp 文件,而 CMake 自动创建的 list 仅包含 1 个 cpp,所以额外的 cpp 文件需要手工添加一下,如下图:

用 CMake 编译

在创建了 CMake 之后我们会发现 VS Code 最下面一行会发生变化

通过点击这里的 Build 就可以编译了

点击 build 之后,我们会看到编译出来的可执行文件:demo_c++

用 CMake 运行

点击上图的符号就可以运行,对于 demo 程序会在 terminal 中输出:

hello, i'm main
i'm class test

用 CMake 调试

在代码里随便找一行设置断点,然后点下面的小甲虫。然后就报错了

在这里我点了取消,先看看错误信息是什么

Starting: "/Library/Developer/CommandLineTools/usr/bin/lldb" --interpreter=mi
error: unknown option: --interpreter=mi
Use 'lldb --help' for a complete list of options.
"/Library/Developer/CommandLineTools/usr/bin/lldb" exited with code 1 (0x1).

错误处理

上面的信息是 /Library/Developer/CommandLineTools/usr/bin/lldb 这个命令不支持 --interpreter=mi 这个参数。这里很容易被弹出提示“打开 launch.json” 误导。

这里需要了解的关键点在与 lldb 和 lldb-mi 的差异。在文档中明确描述需要使用 lldb-mi

这里获取到了一个关键路径 ~/.vscode/,以及关键字段 miDebuggerPath

先在 ~/.vscode/ 找到 lldb-mi,我的路径是:

~/.vscode/extensions/ms-vscode.cpptools-1.13.9-darwin-arm64/debugAdapters/lldb-mi/bin/lldb-mi

然后,我们因为是使用 CMake 来调试,而 CMake 并不会加载 launch.json,所以不能在 launch.json 里面做文章。还是要看工具自身的配置,在里面找到了这个。

点一下 Cmake: Debug Config 中的 settings.json,出现了如下图的内容

在这里可以输入 miDebuggerPath 然后保存,我这里的配置如下:

{"cmake.cmakePath": "/opt/homebrew/bin/cmake","cmake.debugConfig": {"miDebuggerPath": "<当前账户绝对路径>/.vscode/extensions/ms-vscode.cpptools-1.13.9-darwin-arm64/debugAdapters/lldb-mi/bin/lldb-mi"}
}

然后再点击小甲虫,就可以正常调试了。

除了点击按钮之外,还可以在调试控制台输入命令调试。(只是输入命令比较麻烦,需要先输入 -exec 再输入其他命令才可以)

参考资料

http://www.360doc.com/content/22/0420/00/277688_1027337827.shtml

https://blog.csdn.net/henry_23/article/details/120998555

https://code.visualstudio.com/docs/cpp/launch-json-reference

https://code.visualstudio.com/docs/cpp/CMake-linux

https://code.visualstudio.com/docs/editor/debugging#_launch-configurations

https://code.visualstudio.com/docs/cpp/lldb-mi

https://code.visualstudio.com/docs/cpp/cpp-debug

Visual Studio Code(VSCode) 编辑/编译/调试 C++ 代码相关推荐

  1. mingw w64 v8.0.0_使用Visual Studio Code和MinGW编译运行C++代码

    官网:<Using Mingw in Visual Studio Code>,本文稍做了简化,喜英文版可直接移步. 工具准备 首先应该准备如下工具: 安装对应版本的Visual Studi ...

  2. 整理:使用 Visual Studio Code (vscode) 编写、运行、 调试 Java 应用程序

    作为一个喜欢折腾的人,最近抽空折腾一下VScode怎么写java程序.不断更新中.. 附一个原来写的C++的:这两个链接,第二个稍微简单一些 1)Visual Studio Code配置C.C++环境 ...

  3. 在 Visual Studio Code 里编辑 Excel 和 csv 文件两个比较方便的扩展应用

    本人在做 SAP Commerce Cloud ( 电商云 ) 和 SAP Cloud Application Programming 的时候,经常需要编辑 csv 和 excel 文件. 最开始我在 ...

  4. 编辑器推荐:Visual Studio Code(VSCode/VSC)

    简介 Visual Studio Code(以下简称vscode),是微软的一款轻量且强大的编辑器,支持Windows,OS X和Linux.内置JavaScript.TypeScript和Node. ...

  5. Visual Studio Code | VSCode设置语言

    文章目录 一.定义介绍 二.操作教程 1.设置语言 一.定义介绍   本节讲述如何设置VSCode的语言(如:中文.英文等). 二.操作教程 1.设置语言 ①使用快捷键"Ctrl+Shift ...

  6. mac下Visual Studio Code (vscode) 配置C++开发

    一.安装command line tool指令: xcode-select --install 一.下载vscode    Visual Studio Code - Code Editing. Red ...

  7. Visual Studio Code (VScode)支持哪些编程语言

    Visual Studio Code(VS Code)近年来获得了爆炸式增长,成为广大开发者工具库中的必备神器.它作为一个开源项目,也吸引了无数第三方开发者和终端用户,成为顶尖开源项目之一.它在功能上 ...

  8. qstudio c语言中文网,再整理:Visual Studio Code(vscode)下的通用C语言环境搭建

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 主要流程: 1.vscode的下载与简单配置 2.MinGw的下载与安装 3.配置系统环境变量 4 ...

  9. Windows 10下 Visual Studio Code (VSCode) 和 TypeScript 入门

    需要安装 Chrome VSCode这货调试客户端JavaScript代码需要通过Chrome进行 https://www.google.cn/chrome/ 安装 VSCode https://co ...

最新文章

  1. python numpy.meshgrid() 函数的用法(快速生成坐标矩阵)
  2. FFmpeg编译找不到库文件
  3. 用一个小球揭开地球的面纱,探索地球运转的秘密!
  4. CSS3特效 - 呼吸灯效果
  5. html轮播图原理,30_用js实现一个轮播图效果,简单说下原理
  6. 搜索算法-三个简单的小问题
  7. tomcat管理主机
  8. Jtag接口定义及含义
  9. 三星note升级android9,三星Note9官方台版安卓9固件rom升级更新包:BRI-N960FXXS3CSI5
  10. ASIC设计流程简介
  11. Exception in thread main java.lang.UnsatisfiedLinkError: com.mzlr.jni.Calculater.Sum(II)I at com.
  12. IDEA社区版详细安装2022最新版(保姆式)
  13. core dump的诡异事件
  14. java notifier_Java Notifier類代碼示例
  15. 2019年(本命年)个人总结
  16. 警用宽窄带融合技术国际学术交流会成功召开
  17. java 淘宝商品评价计算算法
  18. npm install下载依赖项时报错 fatal: unable to access ‘https://github.com/nhn/raphael.git/‘: Failed to connect
  19. 天地否 (易經大意 韓長庚)
  20. 虚拟大师 安装Linux系统,VMOS Pro虚拟大师完美版,手机一键安装虚拟手机!

热门文章

  1. word中图片为嵌入式格式时显示不全_word嵌入图片显示不全,教您word插入图片显示不全怎么办...
  2. word公式和图片显示不完全
  3. UpdateData用法解释
  4. #《算法竞赛入门经典》勘误
  5. 2018年广东工业大学文远知行杯新生程序设计竞赛 1006 那天的延长线在今天β
  6. MFC链表CList类
  7. 一些需要用到的latex语句
  8. oracle根据约束名查找具体信息,如是哪张表的哪个字段约束信息
  9. 教你怎么把视频转换成gif动图
  10. R语言中的试验一致性检验分析