LLVM/Clang 在Windows上的设置

Force武装卫队 发布于 2012/12/17 23:18
阅读 13K+
收藏 1

由于Clang源代码的缘故,Clang在编译C++程序的时候 ,后端是MinGW,无法正常的寻找到C++ libc++ Include目录

 Clang查找libc++目录 由Clang源代码 lib\Frontend\InitHeaderSearch.cpp 文件实现,而且Clang认为MinGW的目录为C:\MinGW,当然 你可以设置你的Mingw目录,另外,你可以用 clang++ test.cpp -v 查找include目录。

编译C程序,clang并不存在问题 但是在编译C++程序的时候 ,由于Mingw C++目录的设置 Clang是无法正确的解析C++ Include 目录,原因很容易找到 C的 Include 一般在 X:\MinGW\Include (X:盘符)而C++的 Include 一般在 X:\MinGW\lib\gcc\mingw32\[version]\include\c++\ 或者其他,你可能都找不到,也许还有其他的,而Mingw可以通过配置文件找到这些目录,而Clang就显得弱智一些。有个mkheaders的文件和GCC的Include 是相关的。

如何解决clang的目录问题? 很容易知道 LLVM 的libcxx并没有完全移植到Windows,所以Windows用户不要等待Clang自己的lib, LLVM的目录 lib\clang\[version]\include 是默认的C++目录 但是一般里面没有libc++ 所以 我们可以考虑将Clang支持的版本的C++ header 搬迁过来,并测试,我在测试的过程中发现bits\c++config.h没有找到 但是这是iostream所需的,bits文件夹在include目录中 Mingw编译的过去 说明有c++config.h 所以搜索一下 发现在include\mingw\bits 有c++config.h 此目录中有很多头文件 查看一下 include\bits目录 并没有重名的头文件 所以发现是可以合并的,将mingw\bits中的header搬到bits目录,编译c++程序 通过测试表示设置成功    

以上都只是我自己的经验,当然,后端链接都是依靠Mingw实现的 你需要在将Mingw的目录添加到path,推荐使用批处理进行设置。 

以下是话题补充:

@Force武装卫队:在cmd下切换当前目录的时候会导致Mingw的C库无法解析,可以将Mingw C库搬迁到 LLVM\include 目录,进行适当的调整就可以解决问题,最终 可以得到LLVM/Clang在Windows下 使用MinGW后端的配置解决方案,等到LLVM 3.2出来的时候 我回尽可能的制作整合包给大家! (2012/12/18 17:32)
加载中
返回顶部
顶部