VS设置 LLVM-Clang 编译器进行编译C++项目

news/2024/11/19 13:40:39/文章来源:https://www.cnblogs.com/Jeffxu/p/18347778

在VS中默认的C++编译器一般为 MSVC 编译器,可以根据自己的需要将其设置为 LLVM-Clang 编译器。主要有两种方案:
1)直接使用 Visual Studio Installer来自动下载对应的 Clang 编译器和构建工具,后续无需再进行配置,便可直接使用。
2)使用自己编译或者单独下载的 LLVM-Clang 编译器,以及通过 Visual Studio Installer 下载对应的构建工具来进行使用。

通过Visual Studio Installer来自动下载对应的 Clang 编译器和构建工具

该方案操作简单,无需太多配置,启动 Visual Studio Installer ,在单个组件处同时选择 C++ Clang 对应的生成工具适用于Windows的C++ Clang 编译器,如下图所示:

创建或打开C++项目,在属性中进行设置平台工具集LLVM(Clang-cl),如下图所示:

在该设置属性下即可自动调用 LLVM-Clang 编译器进行构建C++项目。该方式默认使用的是 Clang v12的版本,无法进行自定义设置自己需要的 Clang 版本。

使用自定义版本的 LLVM-Clang 编译器

如果需要使用自定义版本的 LLVM-Clang 编译器进行构建C++项目,需要进行如下操作:

1、安装对应的编译器和构建工具

(1)安装所需要的 LLVM-Clang 编译器,需要自己从源码编译或下载需要的LLVM-Clang编译器,LLVM 下载地址。
(2)确保VS已经安装了 适用于<当前VS版本>的C++ Clang-cl生成工具,如下图所示:

2、设置平台工具集及为 LLVM(clang-cl)

打开或创建C++项目,选择 平台工具集LLVM(clang-cl),如下图所示:

此时进行编译会报错 Cannot find LLVM toolset version '12.0.0',由于默认的Clang版本为 v12.0.0,默认的位置为 C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\Llvm\x64\lib\clang\12.0.0。因此还要告诉VS自定义 Clang 的根目录位置和版本号,否则VS将无法找到该编译器。

3、设置自定义LLVM的位置和版本号

创建 Directory.build.props 文件,然后将该文件添加到根解决方案目录中(即.sln所在目录),以将它应用于解决方案中的所有项目。该文件中的内容主要为:

  • LLVMInstallDir :LLVM 的根目录
  • LLVMToolsVersion:LLVM 的版本号,为 根目录\lib\clang下的目录名称

以本机的LLVM所在路径为例,如下图

因此该文件对应的内容如下:

<Project><PropertyGroup><LLVMInstallDir>D:\Programs\clang+llvm-18.1.8-x86_64-pc-windows-msvc</LLVMInstallDir><LLVMToolsVersion>18</LLVMToolsVersion></PropertyGroup>
</Project>

此时进行编译将会直接调用指定位置,指定版本的LLVM-Clang 进行编译构建当前的C++项目。


[参考资料]
Visual Studio 项目中的 Clang/LLVM 支持
LLVM Download Page
Visual Studio 2022 中使用 Clang

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

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

相关文章

记一次微信聊天记录导出工具的折腾

小记微信聊天记录选择性导出工具: WechatExporter 的使用目前的微信app(iOS端 v8.0.46)聊天记录中, 允许用户基于图片/视频进行筛选 单个或者少量保存到本机没啥问题 但是如果你量很大, 不好意思, 有批量操作功能, 但是我不支持全选, 因为我批量操作单次最多只支持 9 个文件 就…

《加缪情书集》-1944

用直白的话语,短句子,热烈表达感情。写很具体的细节打动人全文背诵,谢谢 【PS:加缪和玛丽亚这种不被世俗赞同的感情是不是可以直接拿来用...?】分手后

当你用bing搜索张云杰时

首页会跳出:总结一下:(张杰自称)张云杰现实中是完完全全的废物。打开张云杰相关的图片可以看到:只能说气质相符!

洛谷P3842 线段——题解

洛谷P3842题解传送锚点摸鱼环节 [TJOI2007] 线段 题目描述 在一个 \(n \times n\) 的平面上,在每一行中有一条线段,第 \(i\) 行的线段的左端点是\((i, L_{i})\),右端点是\((i, R_{i})\)。 你从 \((1,1)\) 点出发,要求沿途走过所有的线段,最终到达 \((n,n)\) 点,且所走的路…

IDEA中开启注解处理器时的问题

项目构建脚本:gradle 项目中使用mapstruct(要求开启注解处理器) 使用IDEA构建和运行:在上面的条件下,运行时会报错。解决办法参考: https://blog.csdn.net/kq1983/article/details/130740712 https://blog.csdn.net/qq_33240556/article/details/137046631

[GYCTF2020]Node Game及知识点

🚩crlf简介:CRLF 指的是回车符(CR,ASCII 13,\r,%0d) 和换行符(LF,ASCII 10,\n,%0a),CRLF即回车换行,利用回车换行。因为HTTP协议中是用回车换行来界定头部和实体的,所以如果我们可以用回车换行来恶意拆分请求或者响应 检测:CRLF注入漏洞的本质和XSS有点相似,攻击…

收银台大讲究

支付不就是个收银台嘛?你一个页面怎么要干这么久?这可能是每个做支付的人遇到过得尴尬问题。其实这是微信、支付宝的收银台支付体验做的太好了,给普通人产生的错觉,以为收银台就是几张页面。当你被“野生收银台”制的服服帖帖的时候,你才会发现收银台有大讲究。这次不废话…

js语法

1.作用域 1.1 定于 作用域( scope)规定了变量能够被访问的“范围”,离开了这个“范围″变量使不能被访问 1.2 分类 1.2.1局部作用域 1.2.1.1 函数作用域 在函数内部声明的变量只能在函数内部被访问,外部无法直接访问。1.2.1.2 块作用域 在 Javascript中使用仆}包裏的代码称为代…

JavaSE基础知识分享(三)相关练习题

关于面向对象中的封装部分不知道大家掌握怎么样,快来看看这些题目你能很快写出来吗?写在前面 大家前面的面向对象部分学的怎么样了,快来看看这些题你能不能快速地写出答案,面向对象在Java中是非常重要的,快来检测你的薄弱点在哪,及时查漏补缺! 使用面向对象思想编写下列…

kali常用配置

用户须知 ❝ 1.免责声明:本教程作者及相关参与人员对于任何直接或间接使用本教程内容而导致的任何形式用户须知1.免责声明:本教程作者及相关参与人员对于任何直接或间接使用本教程内容而导致的任何形式的损失或损害,包括但不限于数据丢失、系统损坏、个人隐私泄露或经济损失…

SqlServer 主从复制错误分析--20598

十年河东,十年河西,莫欺少年穷 学无止境,精益求精 1、在分发服务器执行如下脚本select * from MSsubscriber_infoselect * from MSpublications 2、选择分发数据库-distribution,执行如下脚本 sp_helpsubscriptionerrors IZQY9C2TQSKGS9ZTEST ,DBTEST , DbPiblish ,iZzvz…