簡體   English   中英

Clang和C ++ 11標題

[英]Clang and C++11 headers

我正在努力讓Clang在Windows上工作,最終使用Qt Creator進行開發,看看它是否是Visual Studio的可行替代品。

我使用MinGW w64 (mingw-w64-bin_i686-mingw_20111220.zip)編譯LLVM和Clang 3.2(SVN Revision 163238),並通過添加AddMinGWCPlusPlusIncludePaths("D:/Code/mingw/lib/gcc", "x86_64-w64-mingw32", "4.7.0"); )指向gcc的C ++頭目錄AddMinGWCPlusPlusIncludePaths("D:/Code/mingw/lib/gcc", "x86_64-w64-mingw32", "4.7.0"); to clang/lib/Frontend/InitHeaderSearch.cpp ,雖然我認為這可能不是最新的方法。 無論如何,Clang似乎找到了大部分標題。

但是,在編譯簡單的Hello World時:

#include <iostream>
int main(int argc, char* argv[])
{
  std::cout << "test\n";
  return 0;
}

使用clang++ main.cpp我收到此錯誤:

In file included from main.cpp:1:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++\iostream:39:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++\ostream:39:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++\ios:39:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++\iosfwd:41:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++\postypes.h:41:
D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++\cwchar:45:10: fatal error:
      'wchar.h' file not found

所以,Clang顯然發現了幾個包含iostream C ++頭文件但是找不到wchar.h 事實證明, wchar.h位於.../include/c++\\tr1 ,Clang不會查找它。 將這些TR1標題移到一個目錄中也無濟於事。

我在這做錯了什么? gcc C ++庫是否與Clang不兼容,因為它顯然還沒有將一些TR1庫集成到標准中? 我在哪里可以獲得兼容的Clang C ++ 11庫(適用於Windows!)?

您錯誤配置/錯誤修補了Clang。 您還需要在添加版本的位置添加MinGW-w64路徑。

使用我提供的預構建版本和解釋: Windows上的Clang

我修改了Clang以使用MinGW-w64頭文件和GCC 4.6.3 libstdc ++頭文件和庫。 目前,它已停留在3.2版本,但如果您對源(我很遺憾沒有補丁文件)應用類似的補丁,您也應該能夠使用它。

我提供的只是提取,添加到PATH,並使用。 僅限32位。

另請注意,您使用的是古老版本的MinGW-w64 GCC,您應該更新它。

嘗試手動下載“wchar.h”並將其放在Visual Studio項目的本地工作目錄中。 對我來說效果很好。

如果你將-nostdinc++傳遞給clang,你應該能夠將它指向包含多個-I開關的包含的確切配置。 嘗試-nostdsysteminc -nobuiltininc

並且-v應該在編譯時顯示它在哪里以及以什么順序查找標題:

clang++ -v -nostdinc++ -ID:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++ -ID:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++/tr1 foo.cpp

我使用Clang --version 3.4(198054)和mingw-get.exe --version 0.6.2-beta-20131004-1遇到了同樣的問題:結果我錯誤地安裝了MinGW:我最初只檢查了盒子對於mingw-get.exe包選擇對話框中的'mingw-gcc-g ++',稍后添加'mingw32-base'解決了這個wchar_t.h問題:clang ++。exe -std = c ++ 11編譯C ++ 11 iostream代碼就好了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM