与MinGW一起在窗户上叮当响



我已经安装了MinGWgcc和Clangclang并通过chocolatey添加到路径中,两者都可以在命令行上找到。但是,当我尝试将clanggcc一起使用时,clang似乎不知道在标准库中的何处可以找到头文件(例如iostream(,返回以下错误:

clang++ -v main.cpp -o main.exe -std=c++14 -target x86_64-mingw64
clang version 9.0.0 (tags/RELEASE_900/final)
Target: x86_64-unknown-windows-gnu
Thread model: posix
InstalledDir: C:Program FilesLLVMbin
(SKIP)
ignoring nonexistent directory "(nonexistent directories)"
#include "..." search starts here:
#include <...> search starts here:
C:Program FilesLLVMlibclang9.0.0include
End of search list.
main.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
^~~~~~~~~~
1 error generated.
shell returned 1

我已经将gccclang添加到 path 中,以及包含包含在gcc(C:ProgramDatachocolateylibmingwtoolsinstallmingw64libgccx86_64-w64-mingw328.1.0( 中的头文件的目录,所以我不明白为什么clang没有在正确的位置寻找头文件。如何解决此问题?这实际上不是必需的,但是可以更改clang的默认目标吗?clang的当前Windows 10默认值是msvc,但我宁愿不使用它。

解决方案: 编辑路径环境,将 [路径添加到 g++ 文件夹] 移动到"C:\ProgramData\Chocolatey\bin"前面的某个位置。

原因: 使用来自巧克力或其官方网站的预构建二进制文件安装的LLVM缺少头文件,因此它必须使用其他编译的头文件,例如MSVC或mingw64。当你将目标指定为 mingw64 时,clang 会根据 g++.exe(可能是 gcc.exe(的位置猜测 mingw 头文件的路径。 Chocolatey使用软件shimgen将可执行文件"映射"(我不知道是否有更合适的词(可执行文件到"C:\ProgramData\Chocolatey\bin",它放在[g++文件夹的路径]之前。因此,clang 将首先在该路径下检测 "g++.exe",并从中推断出错误的路径。

请原谅我糟糕的英语。

最新更新