在Windows上使用MinGW的Clang

我同时安装了MinGW gcc和Clang clang,并通过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 Files\LLVM\bin
(SKIP)
ignoring nonexistent directory "(nonexistent directories)"
#include "..." search starts here:
#include <...> search starts here:
C:\Program Files\LLVM\lib\clang\9.0.0\include
End of search list.
main.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
         ^~~~~~~~~~
1 error generated.

shell returned 1

我已经将gccclang都添加到了路径,以及包含gccC:\programdata\chocolatey\lib\mingw\tools\install\mingw64\lib\gcc\x86_64-w64-mingw32\8.1.0)中包含头文件的目录中,所以我没有了解为什么clang找不到正确的头文件。我该如何解决这个问题?并且这不是必须的,但是可以更改clang的默认目标吗? clang的当前Windows 10默认值为msvc,但我不希望使用它。

kirecetycike 回答:在Windows上使用MinGW的Clang

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

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

请原谅我的英语不好。

本文链接:https://www.f2er.com/3024845.html

大家都在问