首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Clang如何发现它的默认sysroot /目标三重呢?(clang已停止工作)

Clang如何发现它的默认sysroot /目标三重呢?(clang已停止工作)
EN

Stack Overflow用户
提问于 2020-06-16 09:47:48
回答 1查看 1.8K关注 0票数 3

背景:

在Windows10PC上,我有一个c++代码库。使用CMAKE,我生成一个明-W64项目(使用Eclipse )和一个VisualStudio2017项目。我喜欢用不同的构建系统编译我的项目,因为每个系统都会给出不同的警告和错误。作为明威构建的一部分,我可以使用CMAKE的CXX_CLANG_TIDY启用clang-整齐检查。这很好,产生了一个联合编译,显示了许多有趣的警告来自clang。

当我安装mingw-w64、llvm和VS时,我非常小心,不允许它们填充PATH环境变量,这样常规命令提示符就不会运行gcc、clang或CL或任何相关的工具。环境是由批处理文件在启动Eclipse或Visual之前设置的。

这已经成功多年了(我还在使用clang7.0.1)。两个IDE都编译了相同的代码库.

直到我升级到Visual 2019,包括它自己的clang10.0.0副本。

现在,我原来的clang7.0.1已经停止工作了!因为我只使用clang,所以需要一段时间才能缩小范围,但是原来的clang正在寻找新clang的包含位置中的系统标头。它发现的标头太新,构建失败。

我已经找到了许多可以尝试的东西(尽管欢迎任何指针),比如提供一个--sysroot交换机,所以这个问题更具体:

问题:

当没有明显的环境变量指向特定的clang位置时,clang在哪里找到它的默认目标三重,因此它是-internal-isystem路径?为什么我以前工作的clang安装现在在最近安装的clang位置寻找它的系统头呢?

使用Windows命令提示符:

cd C:\Program Files\LLVM\bin (我原来的clang位置)

代码语言:javascript
运行
AI代码解释
复制
C:\Program Files\LLVM\bin>clang test.cpp -v
clang version 7.0.1 (tags/RELEASE_701/final)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin
 "C:\\Program Files\\LLVM\\bin\\clang.exe" -cc1 -triple x86_64-pc-windows-msvc19.26.28806 -emit-obj -mrelax-all -mincremental-linker-compatible -disable-free -disable-llvm-verifier -discard-value-names -main-file-name test.cpp -mrelocation-model pic -pic-level 2 -mthread-model posix -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -momit-leaf-frame-pointer -v -resource-dir "C:\\Program Files\\LLVM\\lib\\clang\\7.0.1" -internal-isystem "C:\\Program Files\\LLVM\\lib\\clang\\7.0.1\\include" -internal-isystem "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.26.28801\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.18362.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.18362.0\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.18362.0\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.18362.0\\winrt" -fdeprecated-macro -fdebug-compilation-dir "C:\\Program Files\\LLVM\\bin" -ferror-limit 19 -fmessage-length 120 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.26.28806 -std=c++14 -fdelayed-template-parsing -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o "C:\\Users\\Foo\\AppData\\Local\\Temp\\test-c0aac1.o" -x c++ test.cpp
clang -cc1 version 7.0.1 based upon LLVM 7.0.1 default target x86_64-pc-win32
#include "..." search starts here:
#include <...> search starts here:
 C:\Program Files\LLVM\lib\clang\7.0.1\include
 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include
 C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt
 C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared
 C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um
 C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt
End of search list.
In file included from test.cpp:1:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include\string:9:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include\yvals_core.h:462:2: error:
      STL1000: Unexpected compiler version, expected Clang 9.0.0 or newer.
#error STL1000: Unexpected compiler version, expected Clang 9.0.0 or newer.

其中C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include是仅安装的-今天的clang10.0.0位置,所以显然没有编译成clang.exe。

clang从哪里得到它的缺省值?

EN

回答 1

Stack Overflow用户

发布于 2021-06-22 14:38:34

唯一的“地面真相”是clang本身的代码

安装了多个版本的MSVC后,clang将在初始化MSVC工具链驱动程序时使用不同的技巧来设置环境(参见上面链接中的MSVCToolChain::MSVCToolChain() )。

为了解决类似的情况,我使用VCToolsInstallDir环境变量将clang定向到旧的MSVC包含路径。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62414613

复制
相关文章
合并两个结构完全相同的DataTable
两个结构一模一样的DataTable如何合并? 例子:使用Winform进行演示,表2的数据为固定的,表1的数据可以动态添加,通过合并按钮合并表1和表2的数据到表3 1.规定公共的DataTable结
用户1055830
2018/01/18
2K0
合并两个结构完全相同的DataTable
网站就必须用响应式布局吗?MVC视图展现模式之移动布局
本文先引入给读者一个自己研究的机会,下次深入说明一下: 废话不多说,直接上图 新建一个mvc的项目 在视图里面添加一个移动端视图 正常访问一下 Bootstrap自带的响应式的方式(页面代码并没有改变
逸鹏
2018/04/10
1.1K0
网站就必须用响应式布局吗?MVC视图展现模式之移动布局
json在线解析以及json的结构有哪些
作为新手,第一次接触json,连它是什么,估计都不知道吧,json其实是一种数据交换格式,是基于一种文本格式,可以解析以及生成。换另一种方式来说,是可以将json内容转变为json文件进行格式化,当然如果转化过程中,格式出现了问题,还能够提醒。接下来我们具体来看看json在线解析吧。
用户8739990
2021/07/09
2.8K0
json在线解析以及json的结构有哪些
你必须知道的Pandas 解析json数据的函数-json_normalize()
Json是一个应用及其广泛的用来传输和交换数据的格式,它被应用在数据库中,也被用于API请求结果数据集中。虽然它应用广泛,机器很容易阅读且节省空间,但是却不利于人来阅读和进一步做数据分析,因此通常情况下需要在获取json数据后,将其转化为表格格式的数据,以方便人来阅读和理解。常见的Json数据格式有2种,均以键值对的形式存储数据,只是包装数据的方法有所差异:
润森
2022/09/22
3K0
你必须知道的Pandas 解析json数据的函数-json_normalize()
有比JSON更好的东西吗?
各种数据序列化格式进行比较。基本上,是回答以下问题:“能找到比JSON更好的东西吗?”。 这里找的是用于数据序列化的语言,而不是配置文件。
mariolu
2020/10/28
4.9K0
你必须知道的Pandas 解析json数据的函数
Json是一个应用及其广泛的用来传输和交换数据的格式,它被应用在数据库中,也被用于API请求结果数据集中。虽然它应用广泛,机器很容易阅读且节省空间,但是却不利于人来阅读和进一步做数据分析,因此通常情况下需要在获取json数据后,将其转化为表格格式的数据,以方便人来阅读和理解。常见的Json数据格式有2种,均以键值对的形式存储数据,只是包装数据的方法有所差异:
用户8949263
2022/04/08
1.9K0
你必须知道的Pandas 解析json数据的函数
测试人员必须编写代码吗?
通常在系统开发完成或大体完成的情况下参与验证测试系统的功能及其完整性。该角色属于非技术类,一般情况下不需要写代码。
测试小兵
2023/03/09
5130
测试人员必须编写代码吗?
nodejs写入json文件_json文件可以删除吗
哈喽!nodejs的文件系统,接触过node的对node的文件系统肯定不会陌生,这两天我就在思考一个问题,我是否可以在本地操作我的本地json文件,这样一个本地的文本数据库就有了,如果是便签之类,记录的软件,我完全可以不用连后台的数据库,我可以自己操作本地的json文件,自己用node写后台,答案是肯定的,下面我们就一起来实现一下吧,对本地json文件的增、删、改、查
全栈程序员站长
2022/11/04
3K0
nodejs写入json文件_json文件可以删除吗
你的布局设定方法靠谱吗?
本文不适合采用天才设计(Genius Design)方法的人士。 有一种“奇怪的”现象会经常的看到“很多设计师没有办法清楚的跟其他人解释他们是如何设计的,越细致的地方可能越是如此。比如,这个菜单的宽度为什么是200px?250px或者190px是否可以?图片的尺寸为什么是278px*196px?如何确定网页的宽度?“ 软件界面的设计师除了视觉本身以外,对于设计是否可以实现、大概以何种方式实现、规范可否被理解并且复制执行、设计实现的性价比与时间比等纬度都应有相当高度的认识。就像建筑设计师一样,他们一定很了解建
前朝楚水
2018/04/03
1.3K0
你的布局设定方法靠谱吗?
JSON Web Token 的结构是什么
JSON Web Tokens 由使用 (.) 分开的 3 个部分组成的,这 3 个部分分别是:
HoneyMoose
2020/10/02
1.9K0
JSON Web Token 的结构是什么
复杂JSON结构创建语法
最近在开发某个功能的过程中,需要调用一个第三方的接口。我查看某个接文档中请求参数示例时候,有点hold不住了,这这么也太复杂了。
FunTester
2021/12/02
6850
复杂JSON结构创建语法
JSON转成List结构数据
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
SmileNicky
2019/09/18
1.3K0
Go:Json转结构体
本文转载于(喜欢的盆友关注我们):https://mp.weixin.qq.com/s/mBbf0DuUh1Af3vi2DBE7DA
不背锅运维
2022/10/18
5430
Go:Json转结构体
excel 树结构json_excel转换json的强大工具
git clone https://github.com/koalaylj/xlsx2json.git
全栈程序员站长
2022/07/01
1K0
还不了解堆栈和队列吗?数据结构最基础、最重要的概念必须掌握!
堆栈和队列在数据结构中是最基础,但同时也是最重要的概念,很多小伙伴对两者不是很了解,本文就言简意赅的带大家了解一下堆栈和队列。
网络技术联盟站
2023/03/02
1.2K0
还不了解堆栈和队列吗?数据结构最基础、最重要的概念必须掌握!
C#-StructLayoutAttribute(结构体布局)
在C/C++中,struct类型中的成员的一旦声明,则实例中成员在内存中的布局(Layout)顺序就定下来了,即与成员声明的顺序相同,并且在默认情况下总是按照结构中占用空间最大的成员进行对齐(Align);当然我们也可以通过设置或编码来设置内存对齐的方式. 然而在.net托管环境中,CLR提供了更自由的方式来控制struct中Layout:我们可以在定义struct时,在struct上运用StructLayoutAttribute特性来控制成员的内存布局。默认情况下,struct实例中的字段在栈上的布局(Layout)顺序与声明中的顺序相同,即在struct上运用[StructLayoutAttribute(LayoutKind.Sequential)]特性,这样做的原因是结构常用于和非托管代码交互的情形。
vv彭
2021/03/08
1.1K0
C#-StructLayoutAttribute(结构体布局)
同事有话说 | 跨职能团队是必须的吗?
实际上,跨职能团队是由多个来自不同职能领域的人员组成的。但跨职能团队最大的一个特点是团队内的成员不仅来自多个职能领域,还可以扮演多个角色。也就是说,跨职能团队内部就可以协调解决职能空缺、时间紧张、项目进展推进慢等问题。
敏捷开发
2021/07/26
7270
你知道css圣杯布局与双飞翼布局吗?
更多请见:https://blog.csdn.net/weixin_44519496/article/details/120152697
马克社区
2022/07/27
1710
json字符串转为map结构,复杂json字符串转为map结构
开发的时候,经常会遇到json转为Map的需求,简单的json还好处理,如果json比较复杂,转换后为Map嵌套结构,就比较难处理。比如:将下面的json字符串转为Map接口:
IT云清
2019/01/22
8.6K0
点击加载更多

相似问题

烟囱尺寸必须完全相同吗?

10

结构化JSON布局

41

android支持库必须使用完全相同的版本吗?

10

MongoDB中的新文档必须与架构完全相同吗?

24

DOJO json布局结构不起作用

11
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档