目录
文章目录
- 目录
- 安装 VS Code
- 配置 C/C++ 开发环境
- Hello World
- 1、创建项目和源码
- 2、编译运行
- 3、调试
- C/C++ configuration
安装 VS Code
- 下载安装包:https://code.visualstudio.com/Download
- 解压并将文件放入 “应用程序"。
配置 C/C++ 开发环境
官方文档:https://code.visualstudio.com/docs/cpp/config-clang-mac
- 安装 C/C++ 编程常用扩展插件:
- C\C++:language support
- C\C++ Clang Command Adapter:Clang command
- C/C++ Extension UI Themes
- CMake
- CMake Tools
- Makefile Tools
- Code Runner:用于编译。
- CodeLLDB:用于 Debug,解决 Catalina 不支持 LLDB 调试问题。
- 检查 MacOS 上的 Clang/LLVM 环境。
$ clang --version
Apple clang version 14.0.0 (clang-1400.0.29.202)
Target: x86_64-apple-darwin21.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
- 安装 code 指令,便于通过指令行进行操作。
Hello World
1、创建项目和源码
mkdir /workspace/projects
cd /workspace/projects
mkdir helloworld
cd helloworld
code .
使用 code 指令将该目录定义为一个代码项目的工作目录,在该目录下我们会创建 1 个 VS code 代码项目专有的配置目录 .vscode,包含了以下 3 个文件:
- tasks.json (compiler build settings)
- launch.json (debugger settings)
- c_cpp_properties.json (compiler path and IntelliSense settings)
创建 C/C++ 源码文件:
#include <iostream>
int main()
{
for (int i=0; i<3; i++)
{
std::cout << "hello world" << std::endl;
}
return 0;
}
2、编译运行
-
运行并查看输出:
-
第一次运行后会自动生成 tasks.json 文件,设置了代码编译和构建的配置参数。
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: clang++ 生成活动文件",
"command": "/usr/bin/clang++",
"args": [
"-fcolor-diagnostics",
"-fansi-escape-codes",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
- 对应的编译指令:
/usr/bin/clang++ -fcolor-diagnostics -fansi-escape-codes -g /workspace/projects/helloworld/helloworld.cpp -o /workspace/projects/helloworld/helloworld
3、调试
-
单击行号插入 breakpoint。
-
进入调试界面开始调试:
在需要自定义 debug 流程的场景中,可以通过添加 launch.json 配置文件来完成。
- 原始文件:
{
"configurations": [
{
"name": "C/C++: clang++ 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "C/C++: clang++ 生成活动文件"
}
],
"version": "2.0.0"
}
- 自定义使用 CodeLLDB 插件:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${fileDirname}/${fileBasenameNoExtension}.out",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
C/C++ configuration
最后,针对 C/C++ 的诸多扩展内容,我们可以通过 UI 的方式来设置相关的配置,同时会自动生成 c_cpp_properties.json 文件。