MacOS 环境下 VSCode 的 C++ 环境搭建

2023-06-08,,

编译器安装

编译器可以选择 Clang 或者 GCC,在 MacOS 上 Clang 的安装更为简单一些。

Clang(推荐)

打开终端输入命令,

clang -v

查看是否已经安装。

如果已经安装,会输出类似于如下的信息:

Apple clang version 14.0.0 (clang-1400.0.29.202)
Target: arm64-apple-darwin22.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

如果没有安装,则输入命令,

Xcode-select --install

进行安装。

GCC

首先需要安装 brew,安装方法见官网,如果国内访问速度比较慢,可以自行搜索 brew 国内镜像

然后输入命令,

brew install gcc

进行安装。

插件安装

在 VSCode 中安装如下的三个插件

C/C++:提供了编辑的代码智能提示(IntelliSense)和调试(debugging) 功能;
CodeLLDB:提供了更加强力的调试支持;
Code Runner:更方便地运行代码(非调试);

配置文件生成

c_cpp_properties.json

c_cpp_properties.json 中包含了编译器路径、头文件路径等等的设置信息,这些信息主要用于编辑的代码智能提示(IntelliSense)。

在 VSCode 中按下 ⇧⌘P,输入命令 C/C++: Edit Configurations (UI) 打开 C/C++ 的配置页面。根据 CPU 架构(一般是 Intel 或 Apple Silicon) 和编译器(Clang 或 GCC) 的不同,我们需要在配置页面中设置 编译器路径IntelliSense 模式 这两个选项。

编译器路径

从下拉框中选择 Clang/GCC 可执行文件对应的路径。

Clang 的路径示例: /usr/bin/clang 或者 /usr/bin/clang++
GCC 的路径示例: /opt/homebrew/Cellar/gcc/12.2.0/bin/g++

IntelliSense 模式

CPU 编译器 选项
Intel Clang macos-clang-x64
Intel GCC macos-gcc-x64
Apple Silicon Clang macos-clang-arm64
Apple Silicon GCC macos-gcc-arm64

在 C/C++ 的配置页面设置好之后,VSCode 会为我们自动生成 c_cpp_properties.json 文件。

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
}

有关 c_cpp_properties.json 的官方说明可以参考 c_cpp_properties.json reference。

tasks.json

tasks.json 中,我们会定义一个编译可执行文件的任务,

我们可以通过 VSCode 来自动生成这个文件,只要在 C++ 源文件中按下 F5,选择对应的选项(Clang 选择编译器 Clang++,GCC 选择编译器 G++),就会生成这个文件。

tasks.json 的示例

{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "生成活动文件",
"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": "编译器: /usr/bin/clang++"
}
]
}

有关 tasks.json 的详细介绍可以参考 Using Clang in Visual Studio Code 和 Integrate with External Tools via Tasks。

launch.json

launch.json 中我们将设置调试相关的内容。

在之前生成 tasks.json 的同时,也会自动生成这个文件。这个文件的 type 一般会设置为 cppdbg。为了使用 CodeLLDB,建议将其改成 lldb

launch.json 的示例(cppdbg)

{
"version": "0.2.0",
"configurations": [
{
"name": "生成和调试活动文件,
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true, // 推荐设置为 true,否则在调试过程中无法接受输入
"MIMode": "lldb",
"preLaunchTask": "生成活动文件"
}
]
}

launch.json 的示例(lldb)

{
"version": "0.2.0",
"configurations": [
{
"name": "生成和调试活动文件",
"type": "lldb",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"cwd": "${workspaceFolder}",
"preLaunchTask": "生成活动文件"
}
]
}

️注意:请确保launch.jsonpreLaunchTask 的值和 tasks.json 中的 label 保持一致。

有关 launch.json,可以参考Debugging、 Using Clang in Visual Studio Code、Variables Reference 和 Configure C/C++ debugging

如果设置 typelldb,可以参考 CodeLLDB 的官方文档。

MacOS 环境下 VSCode 的 C++ 环境搭建的相关教程结束。

《MacOS 环境下 VSCode 的 C++ 环境搭建.doc》

下载本文的Word格式文档,以方便收藏与打印。