前言:
了解C/C++程序编译步骤以及如何生成可执行文件: C源程序->编译预处理->编译程序(生成*.s文件)->优化程序->汇编程序(生成*.o文件)->链接程序->可执行文件(*.out)
https://www.cnblogs.com/hzb462606/p/14605445.html
正文:
由于VSCode工具最终也是调用g++、clang++编译器,所以安装VSCode前,先检查下自己机器上又没有这两个编译器。可以通过下面指令分别检查是否安装:
g++ --version clang++ --version
eg: xxx@madeMacBook-Pro ~ % g++ --version Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1 Apple clang version 11.0.0 (clang-1100.0.33.17) Target: x86_64-apple-darwin19.3.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin xxx@madeMacBook-Pro ~ % clang++ --version Apple clang version 11.0.0 (clang-1100.0.33.17) Target: x86_64-apple-darwin19.3.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
启动VSCode,按下图打开扩展
在扩展搜索框里,输入如下两款插件,目的是让VSCode拥有C++语法高亮、错误检查和调试等功能。
*注: 为什么安装CodeLLDB? Mac在更新到Catalina后不再支持lldb调试。
所有插件安装完后,我们创建一个控制台应用跑一下。
在桌面创建一个文件夹Test(你的工程根目录),在VSCode中打开该文件夹。在里面新建一个cpp文件命名为main.cpp。随意写些测试程序,如下所示:
保存后按快捷键⇧⌘B编译,此时会出现提示没有找到要运行的生成任务,所以接下来将进行生成任务的配置工作,VSCode提供了一些模版,有需要的可以自行选择,这里就选则Others。
点击“No build task to run found. Configure Build Task...”后,如下所示:
点击“Create tasks.jon file form template”后,如下所示:
点击“Others”后,生成“tasks.json”文件,将其内容替换如下:
{ "version": "2.0.0", "tasks": [ { "label": "Build with Clang",//这个任务的名字在launch.json最后一项配置 "type": "shell", "command": "clang++", "args": [ "-std=c++17", "-stdlib=libc++", //"test.cpp",这里是官方写法,不具有普遍性,注意两个配置文件的统一性即可 "${fileBasenameNoExtension}.cpp", "-o", //"test.out", "${fileBasenameNoExtension}", "--debug" ], "group": { "kind": "build", "isDefault": true } } ] }
保存后按快捷键⇧⌘B编译,你会发现工程目录下已经生成了对应的 {${fileBasenameNoExtension}}这个可执行文件
之后打开工作区,开始调试,会看到以下提示:
创建 launch.json 文件,选择LLDB
launch.json:
{ "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug", //"program": "${workspaceFolder}/test.out", //上一行是官方写法,但是不同的cpp调试都要改配置,非常麻烦 "program": "${workspaceFolder}/${fileBasenameNoExtension}", "args": [], "cwd": "${workspaceFolder}", "preLaunchTask": "Build with Clang" } ] }
点Debug前的启动按钮,开始调试,自动在断点处停下来,在自带的终端里进行输入。