带有Xcode 7.3和CMake的Usign OS X SDK 10.7

问题描述 投票:2回答:1

我遇到了一个严重的问题,使Xcode 7.3针对具有LLVM(7+)和C ++ 11的Mac SDK 10.7编译项目。问题的根源似乎是Xcode或我正在运行OS X 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时,有人遇到类似的问题吗?

编辑

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

编辑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工具链中的complex的定义(第3个条目)是正确的,/ usr / include中的定义是似乎在编译时使用的定义,从而导致错误消息。 complex的定义使用结构。

这里是什么问题? Xcode / Clang或决定与usr / include一起使用而不是工具链附带的问题是否包括在内?我检查了项目设置和编译器输出,并且没有明确包含此路径。

macos sdk xcode7 std
1个回答
0
投票

似乎AppleClang 7+和libc ++只是不支持OS X SDK 10.7中的vecLib。我不得不回到Xcode 6来进行构建。

© www.soinside.com 2019 - 2024. All rights reserved.