在Mac上完美配置VSCode的C/C++开发环境(GCC/G++详细教程)

一、环境准备:安装编译工具

1.1 安装Xcode Command Line Tools (推举首选)

打开终端,执行命令:

xcode-select --install

执行后会弹出安装对话框,点击"安装"即可。这个过程会GCC、G++、Make等基础开发工具。

验证安装:

gcc --version

g++ --version

使用Homebrew 安装更新版本的GCC (可选):如果你需要安装更新版本的GCC,可以通过Homebrew安装:

安装 Homebrew(如果尚未安装)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装 GCC

brew install gcc

注 意: 通过Homebrew安装的GCC命令可能带有版本号,如 gcc-13、g+±13。

mac 通常预安装了Clang编译器,可通过终端验证:

clang --version

二、VSCode 扩展安装

打开了VSCode,按照 Cmd+Shift+X 打开扩展商店,搜索并安装以下的扩展包:

C/C++(Microsoft 官方扩展)-必须

C/C++Extension Pack (扩展包、包含多个相关工具)-推荐

三、项目配置详解

3.1 构建项目目录结构:

my_cpp_project/

├── src/ # 源代码目录

│ └── main.cpp

├── include/ # 头文件目录

├── .vscode/ # VSCode 配置目录

│ ├── tasks.json # 编译任务配置

│ ├── launch.json # 调试配置

│ └── c_cpp_properties.json # 智能提示配置

└── Makefile # 编译脚本(可选)

3.2 配置c_cpp_properties.json 文件

​ c_cpp_properties.json 是Visual Studio Code中C/C++扩展(Microsoft C/C++)用来配置IntelliSense的核心文件。其文件的作用是告诉编辑器去哪里找头文件、使用哪个编辑器、定义哪些宏、采用何种C/C++标准等,从而提供准确的代码补全,语法高亮、错误提示和跳转。

如果还不存在,可以通过如下方式快速创建:

按 cmd+Shift+P → 输入 C/C++: Edit Configurations (UI)(图形界面)或 C/C++: Edit Configurations (JSON)(直接编辑 JSON)。

或者直接手工在 .vscode/ 下新建 c_cpp_properties.json。

一个典型的c_cpp_properties.json 包含了一个configurations 数组、每个配置可针对不同平台或编译器。下面以macos系统为例:

{

"configurations": [

{

"name": "Mac",

"includePath": [

"${workspaceFolder}/**"

],

"defines": \[\],

"compilerPath": "/usr/bin/clang",

"cStandard": "c17",

"cppStandard": "c++14",

"intelliSenseMode": "macos-clang-arm64"

}

],

"version": 4

}

关键字段的说明:

字段 说明 示例 / 常用值

name 配置名称,随意取 "Linux", "Mac", "Win32"

compilerPath 编译器的完整路径(空字符串表示让扩展自动查找) "C:/MinGW/bin/g++.exe" 或 "/usr/bin/gcc"

compilerArgs 附加编译选项(用于 IntelliSense) "-m32"

intelliSenseMode 模拟的内部平台/编译器,影响特性支持 "windows-msvc-x64", "linux-gcc-x64", "macos-clang-x64"

includePath 头文件搜索路径,支持通配符和变量 "workspaceFolder/inc","/usr/include/opencv4"defines预定义宏,等价于−D"DEBUG","VERSION=2"cStandard/cppStandard使用的语言标准"c11","c17","c++14","c++20"browse.path旧版浏览数据库的搜索路径(一般用includePath即可)同上forcedInclude强制每个翻译单元最先包含的文件"{workspaceFolder}/inc", "/usr/include/opencv4" defines 预定义宏,等价于 -D "DEBUG", "VERSION=2" cStandard / cppStandard 使用的语言标准 "c11", "c17", "c++14", "c++20" browse.path 旧版浏览数据库的搜索路径(一般用 includePath 即可) 同上 forcedInclude 强制每个翻译单元最先包含的文件 "workspaceFolder/inc","/usr/include/opencv4"defines预定义宏,等价于−D"DEBUG","VERSION=2"cStandard/cppStandard使用的语言标准"c11","c17","c++14","c++20"browse.path旧版浏览数据库的搜索路径(一般用includePath即可)同上forcedInclude强制每个翻译单元最先包含的文件"{workspaceFolder}/pch.h"

compileCommands 指向 compile_commands.json的路径,用于 CMAKE 等 "${workspaceFolder}/build/compile_commands.json"

configurationProvider 由其他扩展(如 CMake Tools)提供 IntelliSense 信息 "ms-vscode.cmake-tools"

常用变量:可在配置中使用VS Code 预定义变量:

${workspaceFolder} -- 当前打开的工作区根路径

${workspaceFolderBasename} -- 工作区文件夹名

${file} -- 当前打开的文件完整路径

${fileDirname} -- 当前文件所在目录

${fileBasenameNoExtension} -- 当前文件名(不含扩展名)

环境变量可用 ${env:PATH}

3.3 配置tasks.jason

​ task.jason是VS Code任务系统的非常重要的任务配置文件,位于.vscode文件夹下。你可以把重复的命令(如编译、运行脚本、打包)定义成任务,然后一键执行,甚至和调试绑定。

{

"version": "2.0.0",

"tasks": [

{

"type": "cppbuild",

"label": "C/C++: clang 生成活动文件",

"command": "/usr/bin/g++",

"args": [

"-fcolor-diagnostics",

"-fansi-escape-codes",

"-g",

"workspaceFolder/src/∗.cpp","−I{workspaceFolder}/src/*.cpp", "-IworkspaceFolder/src/∗.cpp","−I{workspaceFolder}/include",

"-o",

"fileDirname/{fileDirname}/fileDirname/{fileBasenameNoExtension}"

],

"options": {

"cwd": "KaTeX parse error: Expected 'EOF', got '}' at position 28: ...}" }̲, "...gcc"

],

"group": {

"kind": "build",

"isDefault": false

},

"detail": "调试器生成的任务。"

}

]

}

其中:关键的字段说明

字段 说明 示例

label 任务名称,显示在命令列表里 "build my project"

type 任务类型:"shell"(执行命令)或 "process"(直接运行程序) "shell"

command 要执行的程序(编译器路径等) "g++"

args 传给命令的参数 "-g", "file"group任务分组,build组可通过Ctrl+Shift+B触发"kind":"build","isDefault":trueproblemMatcher解析编译器错误输出,让问题出现在"问题"面板"{file}"] group 任务分组,build 组可通过 Ctrl+Shift+B触发 {"kind": "build", "isDefault": true} problemMatcher 解析编译器错误输出,让问题出现在"问题"面板 "file"]group任务分组,build组可通过Ctrl+Shift+B触发"kind":"build","isDefault":trueproblemMatcher解析编译器错误输出,让问题出现在"问题"面板"gcc" / "msCompile"options设置环境变量或工作目录"cwd":"msCompile" options 设置环境变量或工作目录 "cwd": "msCompile"options设置环境变量或工作目录"cwd":"{workspaceFolder}"

dependsOn 任务依赖,执行前先执行其他任务 "clean"

其中:常用变量:和之前介绍的类似,tasks.jason里也有预定义变量:

${file} -- 当前打开的文件

${workspaceFolder} -- 工作区根目录

${fileBasenameNoExtension} -- 当前文件名(无后缀)

${fileDirname} -- 当前文件所在目录

${env:PATH} -- 环境变量

3.4 配置 launch.json(调试配置)

launch.jason是Visual Studio Code 中用于配置调试器的文件。其作用在于告诉VS code如何启动或附加到你的程序,以便进行断点调试、变量查看等操作。

{

"version": "0.2.0",

"configurations": [

{

"name": "C/C++: g++ build and debug active file",

"type": "cppdbg",

"request": "launch",

"program": "fileDirname/{fileDirname}/fileDirname/{fileBasenameNoExtension}",

"args": \[\],

"stopAtEntry": false,

"cwd": "${fileDirname}",

"environment": \[\],

"externalConsole": false,

"MIMode": "lldb",

"preLaunchTask": "C/C++: clang 生成活动文件"

}

]

}

关键字段说明:

字段 用途 典型值

type 调试器类型,必须为 "cppdbg"(微软 C++ 扩展) "cppdbg"

request "launch" 表示启动新程序;"attach" 表示附加到已有进程 "launch"

program 必填,指向编译生成的可执行文件(路径可以使用变量) "workspaceFolder/build/myapp"args传给程序的命令行参数"−−verbose","data.txt"stopAtEntrytrue会在main()开始处自动暂停,方便调试true/falsecwd程序运行时的当前工作目录"{workspaceFolder}/build/myapp" args 传给程序的命令行参数 "--verbose", "data.txt" stopAtEntry true 会在 main() 开始处自动暂停,方便调试 true / false cwd 程序运行时的当前工作目录 "workspaceFolder/build/myapp"args传给程序的命令行参数"−−verbose","data.txt"stopAtEntrytrue会在main()开始处自动暂停,方便调试true/falsecwd程序运行时的当前工作目录"{workspaceFolder}"

MIMode 指定后端调试器:"gdb" 或 "lldb"(Windows 上还可以是 "msvs") "lldb"

miDebuggerPath 调试器可执行文件的完整路径(如果不在 PATH 中) "/usr/bin/lldb-15"

preLaunchTask 调试前要执行的任务(tasks.json 中的 label) "clang++ build active file"

setupCommands 发送给调试器的初始化命令(如启用美化输出) 见上例

四、测试环境配置

4.1创建

在src/main.cpp创建测试代码:

#include<stdio.h>

#include ".../include/addfunction.h"

int main(){

printf("Hello World!!!\n");

double c=add(8,3);

printf("c=%f",c);

return 1;

}

创建函数add.cpp:

#include<stdio.h>

double add(double a,double b){

return a+b;

}

在include的目录下创建头文件addfunction.h:

#include<stdio.h>

#include<stdlib.h>

double add(double a,double b);

编译:按 Cmd+Shift+B 或通过终端菜单选择"运行生成任务"

调试:按 F5 开始调试

直接运行:在终端中执行 ./main

运行成功:

Hello World!!!

c=11.000000%

相关推荐
p似笑非笑1 小时前
实战验证——把 SDK 塞进一个 macOS 原生 Agent 应用
macos
某不知名網友3 小时前
C/C++动态内存管理,智能指针及RAlI思想。
java·c语言·c++
一杯奶茶¥3 小时前
c语言程序设计大学期末考试考研知识点重点笔记题库复习资料C语言重点考点题库资料合集
c语言·笔记·考研·c语言程序设计·c语言笔记
光芒Shine8 小时前
【C语言-记录点】
c语言
韦胖漫谈IT9 小时前
Apple M3 Max 与 Apple M5 Max 对比:本地算力的新旧王者之争
网络·人工智能·macos·transformer
时间的拾荒人9 小时前
C语言编译与链接:从源码到可执行程序的完整解析
c语言·开发语言
不负岁月无痕10 小时前
STL -- C++ 红黑树封装 Map 和 Set
java·c语言·开发语言·c++·面试
daad77711 小时前
记录vscode连接matlab启动环境搭建
java·vscode·matlab
luj_176820 小时前
残熵算法实时化三大瓶颈突破
c语言·开发语言·网络·经验分享·算法