使用XCode 7.3和CMake使用OSX SDK 10.7

时间:2016-09-02 17:41:56

标签: macos sdk xcode7 std

我有一个严重的问题是让XCode 7.3使用LLVM(7+)和C ++ 11编译针对Mac SDK 10.7的Project。问题的根源似乎是XCode或我正在运行OSX 10.11的事实。我的一些同事没有使用较旧的XCode版本编译相同的问题(6)。以下是一般设置:

所需的库和标题与CMake相关联。包含所有内容的路径多次检查。创建的XCode项目似乎也没问题,我们已经将所有重要设置(C ++方言,std库,目标,定义等)与项目编译的系统进行了比较。

编译vecLib源时出现了实际错误。它似乎是一组随机错误消息,我将追溯到缺少c ++ std头文件。以下是一些示例:

Explicite specialization of non-template class 'complex'

Redifinition of complex as different kind of symbol

在针对较旧的SDK使用较新的XCode时,是否有人遇到过类似的问题?

修改

这是一些更多的信息。在检查了redifinition背后的内容之后,我发现由于一些奇怪的原因,干扰文件中前向声明的复杂定义来自/usr/include/c++/4.2.1。我认为标题已过时或至少与c ++ 11不兼容。我再次检查了编译器使用了什么以及正确设置的lib / language(std = c ++ 11和stdlib = libc ++)。我有一种奇怪的感觉,用户/包含的来源不应该包括在内但我不知道如何修复它。

编辑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而不是工具链包括?我检查了项目设置和编译器输出,并且没有明确包含此路径。

1 个答案:

答案 0 :(得分:0)

似乎AppleClang 7+和libc ++不支持来自OSX SDK 10.7的vecLib。我不得不回到XCode 6来构建它。