在Visual Studio Code macOS上尽量用Clang编译C++

在linux上惯用g++编译cpp. 照理说macOS只要装了g++, vscode装了C/C++的扩展包:

此外配置了下列文件就可以用g++编译:
tasks.json (compiler build settings)
launch.json (debugger settings)
c_cpp_properties.json (compiler path and IntelliSense settings)

下列是用于g++对以上3个配置文件的一份参考(出处不详):

{//tasks.json"tasks": [{"type": "cppbuild","label": "C/C++: g++ build active file","command": "/usr/bin/g++","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}","-std=c++17","-stdlib=libc++",],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "compiler: /usr/bin/g++"}],"version": "2.0.0"
}    
{//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/g++","cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "gcc-x64"}],"version": 4
}  

{//launch.json"configurations": [{"name": "C/C++: debug","type": "lldb","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}","args": [],"cwd": "${workspaceFolder}","preLaunchTask": "C/C++: g++ build active file"}],"version": "2.0.0"
}

但最新macos vscode(如1.88.1)对于g++的支持似乎不那么友好, 每次试图compile或读取配置会报: Cannot find g++ build and debug active file.
很可能因为launch.json的预制配置并没有"g++ build and debug active file", 直接run的话大概率会无法编译. 

参看vscode官方doc, 他还是推荐使用clang在macos编译c++: Configure VS Code for Clang/LLVM on macOS.
于是乎我们还是抽出其中的要点, 主要还是三个配置文件:

{//tasks.json"tasks": [{"type": "cppbuild","label": "C/C++: clang++ build active file","command": "/usr/bin/clang++","args": ["-fcolor-diagnostics","-fansi-escape-codes","-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}","--std=c++17",],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "Task generated by Debugger."}],"version": "2.0.0"
}
{//c_cpp_properties.json"configurations": [{"name": "Mac","includePath": ["${workspaceFolder}/**"],"defines": [],"macFrameworkPath": ["/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"],"compilerPath": "/usr/bin/clang++","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "macos-clang-arm64"}],"version": 4
}
{//launch.json"configurations": [{"name": "C/C++: clang++ build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "lldb","preLaunchTask": "C/C++: clang++ build active file"}],"version": "2.0.0"
}

然后在当前c++ file点击右上角的Debug C/C++ File就可以Run了.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka - Kafka 为啥抛弃 Zookeeper?

Kafka 为什么要抛弃 ZooKeeper?取代方案是怎样的?因为确实有优化空间。 Zookeeper加kafka 的架构,有三层角色: zookeeper ,提供基础的状态持久化和状态通知服务 controller ,基于zookeeper提供的服务&…

如何在Flask应用程序中使用JSON Web Tokens进行安全认证

密码、信用卡信息、个人识别号码(PIN)——这些都是用于授权和认证的关键资产。这意味着它们需要受到未经授权的用户的保护。 作为开发者,我们的任务是保护这些敏感信息,并且在我们的应用程序中实施强大的安全措施非常重要。 现在…

PLC无线通讯技术在汽车喷涂车间机械手臂上的应用

一、项目背景 在汽车生产装配工艺中,机械臂目前已经广泛地应用于装配、搬运等工业生产中,在机械臂系列产品中,汽车喷漆自动控制喷涂机械装置以其独特的优势,能够根据油漆喷涂量的大小,严格控制喷嘴与喷漆面之间距离等…

flink Unsupported operand types: IF(boolean, NULL, String)

问题:业务方存储了NULL 字符串,需要处理为 null select if(anull,null,a); 结果遇到了 Unsupported operand types: IF(boolean, NULL, String),根据报错反馈,很明显应该是没有对 null 自动转换&#xff…

vue里面事件修饰符.stop使用案例

Vue.js 事件修饰符 .stop 用于阻止事件继续传播,即阻止事件冒泡。这在处理父子组件之间的事件通信时特别有用,可以防止事件从子组件冒泡到父组件,或者在一个元素上绑定多个事件处理函数时,阻止后续事件处理函数的执行。 下面是一个…

直播预告:拥抱AI-探索AI大模型在邮件反钓鱼检测的应用

随着ChatGPT的问世,生成式AI技术迅速渗透到我们生活的各个角落,以ChatGPT为代表的生成式AI技术,依托其强大的AI模型和海量数据,赢得了广泛的欢迎。 然而,生成式AI的不断演进也带来了新的挑战。大型语言模型&#xff08…

前端常用的数据加密方式

前端开发中,数据安全是至关重要的一个方面。数据加密是保护用户隐私和信息安全的关键方法之一。 前端常用的数据加密方式涵盖了对传输数据的加密、存储数据的加密以及客户端与服务器端之间通信的加密。 1. 对称加密算法 对称加密算法使用相同的密钥进行加密和解密…

IUG-CF论文精读

Neural collaborative filtering with ideal user group labels (具有理想用户组标签的神经协同过滤) 论文地址:https://www.sciencedirect.com/science/article/pii/S0957417423023898 摘要: 人口统计信息是推荐系统(RSs)的关键…

社交媒体数据恢复:钉钉

在数字化办公日益普及的今天,钉钉作为一款综合性的企业级通讯工具,已经深入到众多企业和个人的工作与生活中。然而,在日常使用过程中,我们难免会遇到一些意外情况导致数据丢失的问题。本文将针对钉钉数据恢复这一主题,…

色彩空间转换在AI去衣技术中的应用与探索

在人工智能(AI)的广阔领域中,图像处理和计算机视觉技术一直占据着举足轻重的地位。其中,AI去衣技术作为一种新兴的图像处理技术,近年来受到了广泛关注。在AI去衣的实现过程中,色彩空间转换技术发挥着至关重…

文心一言 VS 讯飞星火 VS chatgpt (242)-- 算法导论17.4 1题

一、假定我们希望实现一个动态的开地址散列表。为什么我们需要当装载因子达到一个严格小于 1 的值 a 时就认为表满?简要描述如何为动态开地址散列表设计一个插入算法,使得每个插入操作的摊还代价的期望值为 O(1) 。为什么每个插入操作的实际代价的期望值…

文旅IP孵化打造抖音宣传推广运营策划方案

【干货资料持续更新,以防走丢】 文旅IP孵化打造抖音宣传推广运营策划方案 部分资料预览 资料部分是网络整理,仅供学习参考。 PPT可编辑(完整资料包含以下内容) 目录 文旅IP抖音运营方案 1. 项目背景与目标 - 背景&#xff1a…

【无监督+自然语言】GPT,GPT-2,GPT-3 方法概述 (Generative Pre-Traning)

主要参考 【GPT,GPT-2,GPT-3 论文精读【李沐论文精读】-2022.03.04】 https://www.bilibili.com/video/BV1AF411b7xQ/ 大语言模型综述: http://t.csdnimg.cn/4obR4 发展节点 2017.06 Transformer: 所有大语言模型LLMs的基础结构 , Attent…

【六十二】【算法分析与设计】买苹果_牛客题霸_牛客网,牛牛爱博弈,829. 连续整数求和,对数器找规律法,博弈论2^k移动对3取余规律,取余的性质整除性

买苹果_牛客题霸_牛客网 描述 小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易…

2元4mm2高精度温度湿度传感器GXHTC3

温湿度传感器芯片GXHTC3 前言: 该温湿度传感器为国产,批量价格约2元,精度较高,DHT11该被淘汰了,这个才是传感器。 特点 超低功耗 宽工作电压范围(1.62 – 5.5 V) 小型 DFN 封装: 2 2 0.75 mm3 典型精度: 湿度 2 %R…

创新与乐趣的融合 —— 探索我们独家录音变音芯片在学舌玩具领域的应用

一:概述 学舌玩具,又称作复读玩具或模仿玩具,是一类设计用来录制人声并重复播放的互动式玩具。这类玩具以其能够模仿人类语音的特性而受到小朋友和宠物主人的喜爱。这些玩具通常具有以下特点和功能: 1. 录音和播放功能&#xff…

sc2024项目consul

1. 什么是consul HashiCorp Consul是一款服务网络解决方案,可让团队管理服务之间以及内部部署和多云环境及运行时的安全网络连接。consul提供服务发现、服务治理、流量管理和对网络基础设施设备的自动更新。(添加链接描述)Consul使用Go语言开发 2. 功能 多数据中…

Mysql基础(二)数据类型和约束

一 数据类型 讲解主要的数据类型,不面面俱到,后续遇到具体问题再查询补充扩展: 知识点的深度和广度以工作为导向 ① int float M : 表示显示宽度,M的取值范围是(0, 255)例如: int(5),当数据宽度小于5位的时候在数字前面需要用字符填满宽度说明&…

【Linux】对system V本地通信的内核级理解

一、system V版本的进程间通信技术 通过之前的学习,我们大致可以感受出来,共享内存,消息队列和信号量在使用的时候是有很多共性的。它们三个的接口,包括接口中传的参数有的都有很大的相似度。其实,共享内存&#xff…

05 JavaScript学习:语法

JavaScript 是一种动态类型的脚本语言,广泛用于网页开发和构建交互式网页。JavaScript 的语法相对简单,但功能强大,它可以在客户端执行,并与HTML和CSS一起构建交互式的网页。 JavaScript 字面量 在 JavaScript 中,字…