我有一個嚴重的問題得到XCode 7.3編譯與LLVM(7 +)和C + + 11的Mac SDK 10.7項目。問題的根源似乎是XCode或我正在運行OSX 10.11。我的一些同事沒有使用舊的XCode版本(6)編譯相同的問題。以下是一般設置:Usign OSX SDK 10.7與XCode 7.3和CMake
所需的庫和標題與CMake鏈接。所有東西的包含路徑都被多次檢查過。創建的XCode項目似乎也沒問題,我們將所有重要設置(C++方言,std庫,目標,定義等)與項目編譯的系統進行了比較。編譯vecLib source.It似乎當是一組隨機的錯誤消息我會追溯到缺乏STD頭的C++
實際的錯誤來。這裏有一些例子:
Explicite specialization of non-template class 'complex'
Redifinition of complex as different kind of symbol
在使用較新版本的XCodes處理較舊的SDK時,是否有人遇到過類似的問題?
編輯
下面是一些更多的信息。在檢查了重定義之後,我發現由於某種奇怪的原因,干擾文件中前向聲明的複雜定義來自/usr/include/c++/4.2.1。我認爲標題已過時或至少與C++ 11不兼容。我再次檢查了編譯器使用的內容以及正確設置的lib/language(std = C++ 11和stdlib = libC++)。我有一種奇怪的感覺,認爲用戶/包含的源不應該被包含,但我不知道如何解決它。
EDIT 2
我檢查的標準包括與cpp -v
路徑,得到了以下列表:
/usr/local/include
/Applications/XCode/.../XCodeDefault.xtoolchain/usr/bin/../lib/clang/7.3.0/include
/Applications/XCode/.../XCodeDefault.xtoolchain/usr/include
/usr/include
/System/Library/Frameworks
/Library/Frameworks
在Xcode工具鏈(第3項)複雜的定義是正確的其一,/ usr/include中的定義是編譯時似乎使用的定義,導致出現錯誤消息。 complex
的定義使用結構。
這裏有什麼問題? XCode/Clang還是決定使用usr/include而不是工具鏈包含的問題?我檢查了項目設置和編譯器輸出,並沒有明確包含此路徑。