- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
背景:
在 Windows 10 PC 上,我有一个 C++ 代码库。使用 CMAKE 我生成了一个 Mingw-w64 项目(使用 Eclipse IDE)和一个 Visual Studio 2017 项目。我喜欢用不同的构建系统编译我的项目,因为每个构建系统都会给出不同的警告和错误。作为 Mingw 构建的一部分,我可以使用 CMAKE 的 CXX_CLANG_TIDY 启用 clang-tidy 检查。这很好用,生成了一个协同编译,显示了来自 clang-tidy 的许多有趣警告。
当我安装 mingw-w64、llvm 和 VS 时,我小心翼翼地不允许它们填充 PATH 环境变量,因此常规命令提示符不会运行 gcc、clang 或 CL 或任何相关工具。在启动 Eclipse 或 Visual Studio 之前,通过批处理文件设置环境。
这多年来一直运行良好(我仍在使用 clang 7.0.1)。两个 IDE 都可以很好地编译相同的代码库...
直到我升级到 Visual Studio 2019,包括它自己的 clang 10.0.0 副本。
现在,我原来的 clang 7.0.1 已经停止工作了!由于我只使用 clang-tidy,因此需要一段时间才能缩小范围,但原始 clang 正在新 clang 的包含位置中寻找系统 header 。它找到的 header 太新,构建失败。
我发现很多东西可以在 SO 和其他地方尝试(尽管欢迎任何指针),比如提供 --sysroot
开关,所以这个问题更具体:
问题:
当没有明显的环境变量指向特定的 clang 位置时,clang 在哪里找到它的默认目标三元组,因此它是 -internal-isystem
路径?为什么我以前工作的 clang 安装现在会在最近安装的 clang 位置查找它的系统 header ?
使用 Windows 命令提示符:
cd C:\Program Files\LLVM\bin
(我原来的 clang 位置)
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
是今天安装的 clang 10.0.0位置,所以显然没有编译成 clang.exe。
clang 从哪里获得它的默认值?
最佳答案
唯一的“基本事实”是 the code of clang itself .
安装了多个版本的 MSVC,clang 将在初始化 MSVC 工具链驱动程序时使用不同的技巧来设置环境(请参阅上面链接中的 MSVCToolChain::MSVCToolChain()
)
为了解决类似的情况,我使用 VCToolsInstallDir
环境变量将 clang 指向旧的 MSVC 包含路径。
关于clang - Clang 如何找到它的默认 sysroot/target 三元组? (clang-tidy 已停止工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62414613/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!