近来闲暇无事,看到同门师兄弟掌握技能甚多,吾也想习得一点傍身之技,所以便开始了C++的学习。同时,吾攒钱终于购置了一台丐中丐版m1 macbook air,爱不释手,故想要在mac上来调试C++程序,万事开头难,mac上的vs和win上的vs有着天壤之别,并且不支持调试C++。头秃,何解?寻遍度娘,终于成功配置vscode调试C++的环境,接下来请听吾细细道来。
目录
Step1:下载vscode
Step2:安装clang编译器
Step3:下载扩展
Step4:新建cpp文件
Step5:配置文件
1.配置tasks.json文件
2.配置c_cpp_properties.json文件
3.编译生成文件
4.配置launch.json文件
5.调试(debug)
6.配置文件代码
Step6*:调用外部终端
总结
参考文档
Step1:下载vscode
vscode已经完成对m1芯片的适配,可以直接进入官网下载vscode。
Step2:安装clang编译器
clang --version查看是否已经安装clang编译器,若已安装,直接进入下一步。
xcode-select --install,按提示进行安装即可。
Step3:下载扩展
打开vscode, 在侧边栏中点击扩展,搜索并安装以下4个扩展:
- C/C++
- C++ Intellisense
- CodeLLDB(C++debugger)
- Chinese(中文扩展包)
Acquiring CodeLLDB platform package,这是在下载并安装改平台包,如果下载速度很慢,可以直接下载CodeLLDB平台包,m1 mac选择codelldb-aarch64-darwin.vsix进行下载。下载完成后,手动安装已下载的平台包,步骤如下图:
按照提示重启vscode,不再提示Acquiring CodeLLDB platform package表示安装成功。
Step4:新建cpp文件
这里直接采用微软官方文档中的helloworld.cpp文档。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
for (const string& word : msg)
{
cout << word << " ";
}
cout << endl;
}
Step5:配置文件
1.配置tasks.json文件
终端---配置默认生成任务---C/C++ clang++,此时会生成一个tasks.json文件,这个文件是默认生成的,需要修改其中的args选项,添加一个"-std=c++17",,修改如下:
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-std=c++17",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
]
修改完后,发现依旧会出现语法错误,别急,接下来,需要配置另一个文件。
2.配置c_cpp_properties.json文件
shift+command+p调出C/C++:编辑配置(json),此时会自动生成一个c_cpp_properties.json文件。
clang++:
"compilerPath": "/usr/bin/clang",修改为"compilerPath": "/usr/bin/clang++",
C++17:
"cppStandard": "c++98",修改为"cppStandard": "c++17",
3.编译生成文件
终端---运行生成任务,此时会生成一个二进制文件,右键这个二进制文件,点击在终端中打开,键入./你的二进制文件名,即可看到输出结果。
“哎呀呀,这些我都会,就是debug总是不成功,怎么办啊?嘤。”
别急别急,这就道来。
4.配置launch.json文件
运行---添加配置---C++(GDB/LLDB)---clang++ 生成活动文件,会生成一个launch.json文件。
"type": "cppdbg",修改为"type": "lldb",
到此,所有配置工作均完成。
“这就完了??我不信,我要debug!我要debug!!”
好不好使,我们试一下不就知道了~
5.调试(debug)
运行---启动调试,各种变量就成功展现在我们眼前了。
6.配置文件代码
以下是我的三个json文件配置代码:
tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: clang++ 生成活动文件",
"command": "/usr/bin/clang++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-std=c++17",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: /usr/bin/clang++"
}
]
}
c_cpp_properties.json:
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"macFrameworkPath": [
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
],
"compilerPath": "/usr/bin/clang++",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "macos-clang-arm64"
}
],
"version": 4
}
launch.json:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "clang++ - 生成和调试活动文件",
"type": "lldb",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "C/C++: clang++ 生成活动文件"
}
]
}
“确实是能调试了,可是我的输出结果为什么不在外部的终端里显示,却是在vscode中显示呢?到底怎么回事??嘤。”
征途已接近尾声,不要着急嘛,这里简单设置一下就好啦~
Step6*:调用外部终端
管理---设置,在搜索框中输入terminal external,步骤如下:
external:
重启vscode,再次运行程序,会发现输出结果显示在终端之中了,若终端没有弹出到桌面,可以检查dock栏,这是会发现终端“站”在了小点之上,点开它即可观察输出结果。
总结
之前在网上找了很久搭建环境的方法,虽然确有很多文章
参考文档
- m1 MacBook配置VS code的C++环境(2021年8月)
- VSCode: Acquiring CodeLLDB platform package 速度慢
- mac vscode配置以及 运行c/c++代码时无法弹出外部终端