前言:
了解C/C++程序编译步骤以及如何生成可执行文件: C源程序->编译预处理->编译程序(生成*.s文件)->优化程序->汇编程序(生成*.o文件)->链接程序->可执行文件(*.out)
正文:
1、由于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
2、启动VSCode,按下图打开扩展
在扩展搜索框里,输入如下三款插件,目的是让VSCode拥有C++语法高亮、错误检查和调试等功能。
*注: 为什么安装CodeLLDB? Mac在更新到Catalina后不再支持lldb调试。
所有插件安装完后,我们创建一个控制台应用跑一下。
在桌面创建一个文件夹Test(你的工程根目录),在VSCode中打开该文件夹。在里面新建一个cpp文件命名为main.cpp。随意写些测试程序,如下
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
cout << "Hello world!!" << endl;
return 0;
}
3、之后打开工作区,开始调试,会看到以下提示:
创建 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"
}
]
}
4、保存后按快捷键⇧⌘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
}
}
]
}
保存后切换到对应.cpp文件, 按快捷键‘⇧⌘B’编译,你会发现工程目录下已经生成了对应的 {${fileBasenameNoExtension}}这个可执行文件
6、在点Debug的启动按钮,开始调试,自动在断点处停下来,在自带的终端里进行输入。