2016-09-02 95 views
2

我有一個嚴重的問題得到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而不是工具鏈包含的問題?我檢查了項目設置和編譯器輸出,並沒有明確包含此路徑。

回答

0

看起來好像AppleClang 7+和libC++不支持OSX SDK 10.7中的vecLib。我不得不回到XCode 6來建立它。