VS Code搭建LLVM(clang/clang++)编译环境(自己备用)

在MSYS2的MinGW64环境中,clang++.exe工具是为了提供一种替代的C++编译器。它基于LLVM项目,具有以下优势:

  1. 现代化特性:Clang支持最新的C++标准和语言特性,提供更好的语法解析和错误提示。
  2. 高效优化:Clang的优化技术可以生成高效的机器代码,提升程序性能。
  3. 兼容性:Clang可以与MinGW64环境中的其他工具(如GCC)兼容,方便在Windows上进行开发。
  4. 多平台支持:Clang支持多种平台和目标架构,增加了开发的灵活性。

因此,在MinGW64下包含clang++.exe是为了给开发者提供更多选择。你可以根据自己的需求选择使用GCC或Clang进行开发。

创建tasks.json

在项目根目录下创建一个 .vscode 文件夹,然后在该文件夹内创建 tasks.json 文件,添加以下内容:

{"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "D:\\msys64\\mingw64\\bin\\clang++.exe","args": ["-g","${file}",  // 确保这个是你的源文件"-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"]}]}

创建launch.json

在同一 .vscode 文件夹内创建 launch.json 文件,添加以下内容以配置调试:

{"version": "0.2.0","configurations": [{"name": "Debug","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "build","miDebuggerPath": "D:\\msys64\\mingw64\\bin\\gdb.exe"}]}

c_cpp_properties.json 文件用于配置 VS Code 中 C/C++ 扩展的 IntelliSense。以下是一个示例配置,适用于使用 MinGW 的 Windows 环境:

{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}\\**","D:\\msys64\\mingw64\\include\\**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"compilerPath": "D:\\msys64\\mingw64\\bin\\clang++.exe","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "clang-x64"}],"version": 4
}

 ---------

Clang 和 LLVM 是两个密切相关的项目,广泛用于编程语言的编译和开发。

Clang

  • 定义:Clang 是一个 C、C++ 和 Objective-C 的编译器前端。
  • 功能:提供高效的编译、良好的错误和警告信息,以及优秀的开发者工具支持。
  • 优点:开源、模块化、易于扩展,能够支持快速的编译和增量编译。

LLVM

  • 定义:LLVM 是一个编译器基础设施项目,提供了一套用于构建编译器的工具和库。
  • 功能:支持多种编程语言的编译优化、代码生成等功能。
  • 组件:包括中间表示(IR)、优化器、后端代码生成器等,能够生成高效的机器代码。

关系

  • Clang 是基于 LLVM 的前端,负责解析源代码并生成 LLVM IR,后者再通过 LLVM 的后端生成目标代码。
  • 二者结合,提供了强大的编译工具链。

应用

Clang/LLVM 被广泛应用于各种开源和商业项目,包括现代 IDE 和工具链(如 Xcode 和 Visual Studio Code)。

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

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

相关文章

鸿蒙环境服务端签名直传文件到OSS

本文介绍如何在鸿蒙环境下将文件上传到OSS。 背景信息 鸿蒙环境是当下比较流行的操作环境,与服务端签名直传的原理类似,鸿蒙环境上传文件到OSS是利用OSS提供的PutObject接口来实现文件上传到OSS。关于PutObject的详细介绍,请参见PutObject。…

VMware安装飞牛私有云fnOS并挂载小雅Alist实现异地远程访问

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

记一次键盘f2和f5键被自动触发情况

背景: 联想小新笔记本电脑内置键盘,其中f2键和f5键一直被自动触发,已尝试过更换输入法,重装系统,拆开键帽清灰依旧无效。考虑维修费或者更换键盘(内置)费都挺贵的,而且f2和f5作用也…

Unity教程(十六)敌人攻击状态的实现

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…

2024java面试-软实力篇

为什么说简历很重要? 一份好的简历可以在整个申请面试以及面试过程中起到非常好的作用。 在不夸大自己能力的情 况 下,写出一份好的简历也是一项很棒的能力。为什么说简历很重要呢? 、 先从面试来说 假如你是网申,你的简历必然…

论文阅读-《Attention is All You Need》

注意力就是一切 【要点】:论文提出了一种全新的网络架构——Transformer,完全基于注意力机制,无需使用循环和卷积,实现了在机器翻译任务上的性能提升和训练效率的显著提高。 【方法】:通过构建一个仅使用注意力机制的…

【计算机网络 - 基础问题】每日 3 题(十三)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…

cadence SPB17.4 - allegro - 用板子外形创建整板铺铜

文章目录 cadence SPB17.4 - allegro - 用板子外形创建整板铺铜概述笔记先确定自己板子的 board Geometry/Design_Outline 是否有外形shape为了将软件提示看得更清楚,在每个操作之前,先将命令提示区内容先删了用Z-copy从外形层生成整板的铺铜备注END cad…

【JS】postMessage与MessageChannel

前言 postMessage 和 MessageChannel 都是用来实现跨文档、跨窗口或跨线程(Web Worker)的消息传递机制。 postMessage 可以在 iframe、同源或跨源窗口之间传递数据,也可以用于主线程与 Web Worker 之间的通信。 postMessage 是一种单向的…

数据结构-3.1.栈的基本概念

一.栈的定义: 栈和线性表的区别:栈只能在表尾一端进行插入或者删除的操作,而线性表可以在任意一个地方进行插入或者删除 二.有关栈的关键术语: 三.栈的基本操作: 1.回顾线性表的基本操作: 2.栈的基本操作&…

佰朔资本:国内海风加速招标 船舶行业景气上行

昨日,沪指盘中一度下探失守2700点,尾盘在地产、银行等板块的带动下发力上扬,深证成指亦翻红。到收盘,沪指涨0.49%报2717.28点,深证成指涨0.11%报7992.25点,创业板指跌0.11%报1533.47点,上证50指…

商业终端架构技术-未来之窗行业应用跨平台架构

未来之窗行业应用跨平台架构 以下是对未来之窗行业应用跨平台架构中客户端的稳定优势和网页跨平台性质的扩展列举: 一、客户端的稳定优势: 1. 离线可用性 - 即使在没有网络连接的…

如何将MySQL卸载干净(win11)

相信点进来的你肯定是遇到了这个问题,那就是在安装MySQL的时候操作错误,最后结果不是自己想要的。卸载重新安装又发现安装不了。其实最主要的原因就是没有将MySQL卸载干净,那么如何把MySQL卸载干净?下面本篇文章就来给大家一步步介…

Tiny-universe 1:Qwen整体介绍Qwen-blog

Qwen模型架构讲解直播:直播链接 Qwen的整体架构与Llama2类似,如下图所示: 其中: tokenizer将文本转为词表里面的数值。数值经过embedding得到一一对应的向量。attention_mask是用来看见左边、右边,双向等等来设定。各类下游任务&#xff0…

Kafka集群扩容(新增一台kafka节点)

kafka集群扩容、kafka topic迁移 现有环境 IP组件角色192.168.17.51kafka01broker1192.168.17.52kafka02broker2192.168.17.53kafka03broker3 扩容之后环境 IP组件角色192.168.17.51kafka01broker1192.168.17.52kafka02broker2192.168.17.53kafka03broker3192.168.17.54ka…

InternVL 微调实践闯关任务

基础任务 follow 教学文档和视频使用QLoRA进行微调模型,复现微调效果,并能成功讲出梗图. 尝试使用LoRA,或调整xtuner的config,如LoRA rank,学习率。看模型Loss会如何变化,并记录调整后效果(选做&#xff…

【论文串烧】多媒体推荐中的模态平衡学习 | 音视频语音识别中丢失导致的模态偏差对丢失视频帧鲁棒性的影响

文章目录 一、多媒体推荐中的模态平衡学习1.1 研究背景1.2 解决问题1.3 实施方案1.4 文章摘要1.5 文章重点1.6 文章图示图 1:不同模型变体在 AmazonClothing 数据集上的初步研究图 2:CKD模型架构的说明图 3:在 Amazon-Clothing 数据集上训练过…

【LabVIEW】事件结构的用法

本篇文章记录我学习LabVIEW的事件结构用法,希望我的分享对你有所帮助! 目录 一、案例说明 1、 LabVIEW实现“YAXBXC的计算” 2、添加事件结构 一、案例说明 在LabVIEW实现“YAXBXC的计算”的基础上,加上事件结构,实现单击一次按…

后端接收数组,集合类数据

文章目录 一. 请求行Path参数(不建议)二.数组接收(不建议)三.List集合接收(建议)四. GET请求既包含请求体又包含请求行 一. 请求行Path参数(不建议) DeleteMapping("/{ids}&quo…

分布式Redis(14)哈希槽

文章目录 一致性哈希算法理论普通哈希的问题一致性hash算法 Redis 使用哈希槽Redis Cluster集群 为什么Redis是使用哈希槽而不是一致性哈希呢?为什么Redis Cluster哈希槽数量是16384? 关键词:一致性 Hash,哈希槽, 带着…