首页 > 编程语言 >MacOS 环境下 VSCode 的 C++ 环境搭建

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

时间:2023-01-28 22:56:49浏览次数:63  
标签:MacOS VSCode 编译器 Clang json clang GCC C++

编译器安装

编译器可以选择 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 CodeIntegrate 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,可以参考DebuggingUsing Clang in Visual Studio CodeVariables ReferenceConfigure C/C++ debugging

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

标签:MacOS,VSCode,编译器,Clang,json,clang,GCC,C++
From: https://www.cnblogs.com/revc/p/17071232.html

相关文章

  • VSCode无法跳转C++头文件解决
    问题VSCode安装c++插件后可以在源码与头文件之间跳转(Alt+O)非常方便。突然某天特定的workspace失效,无论如何重装插件活VSCode都不能复原。解决既然其他workspace正常......
  • 【C++ 数据结构:链表】二刷LeetCode707设计链表
    【C++链表】使用c++重新写一遍LeetCode707设计链表目的是熟悉c++中链表的操作知识点C++链表节点的实现在c++中,一般通过结构体来定义链表的节点,也需要写构造函数(使用初......
  • C++ const pointer
    在C++中const限定的指针类型常常令人困惑,现整理如下,以整型为例,主要区分如下三个例子constint*p;int*constp;constint*constp;其实就是2种情况,const在int前......
  • 关于 Dev-C++ 中缺少 iconv.h 的问题
    前言在C++中有个扩展库ext,里面有一些黑科技(hash,splay,binomial_heap等等),在Windows环境中,我们运行Dev-C++并在头文件写#include<bits/extc++.h>时,经常会收到......
  • vscode配置存档
    //setting.json{"debug.console.fontFamily":"JetBrainsMono",//控制在运行预启动任务后遇到错误时应该怎么做。debugAnyway:忽略任务错误并开始调试。"de......
  • macos:安装java 17.0.6(android studio报错:Unable to locate a Java Runtime.)
    一,报错信息:androidstudio的报错信息:Theoperationcouldn’tbecompleted.UnabletolocateaJavaRuntime.Pleasevisithttp://www.java.comforinformation......
  • vscode 利用正则 搜索标签 tags (?=.*关键字1)(?=.*关键字2).*
    vscode利用正则搜索标签(?=.关键字1)(?=.关键字2).*这里关键词是可以多个并且不按照顺序搜索的,就是写起来需要(?=.关键字)最后.结尾我是不是需要制作一个转换的小......
  • C++函数文档注释模板
    还是.net好,///就解决了点击查看代码///<summary>///在指定的node结点之后插入新结点,如果node为NULL,表示新结点插在链表第一个结点之前///</summary>///<paramna......
  • macOS 上安装和配置 Flutter 开发环境
    本文基于此:Flutter中文网一、安装和运行Flutter的系统环境要求想要安装并运行Flutter,你的开发环境需要最低满足以下要求:操作系统:macOS磁盘空间:2.8GB(不包括IDE/......
  • 大海捞针 Skia(C++):Skia 环境搭建
    前言笔者曾经编译过一款使用了Skia的软件,于是查询了一些资料,了解到Skia是一个2D向量图形处理函数库。只是可惜,笔者尝试用它写程序,但是官方文档国内无法访问,网上资料极少,并......