iOS 项目无法在部署目标 7.0 的 xcodebuild 下编译,但对于 6.0 没问题。在 Xcode 下为两者编译

iOS project fails to compile under xcodebuild for deployment target 7.0, but is fine for 6.0. Compiles for both under Xcode

我有一个 iOS 项目,其中 iOS 6.0 作为部署目标。它在 Xcode 和 xcodebuilder 下都能正常构建(CI 是必需的)。但是,客户现在希望该项目仅供安装了 iOS7+ 的用户使用。

没问题,我会增加部署目标数量,对吗?错了!

在 Xcode 下,项目继续正常编译。然而,在 xcodebuild 下,该项目无法编译并出现很多错误,如下所示:

Undefined symbols for architecture armv7:
"std::string::_Rep::_S_empty_rep_storage", referenced from: in drmNativeInterface

它使用 Adobe PrimetimedrmNativeInterface 是其中的一部分。

为了帮助隔离问题,我创建了一个全新的单屏项目并进行了以下更改:

除了上面那几个步骤,项目是原厂单屏:没有添加任何代码。

Xcode 会编译它但 xcodebuild 不会。为了让 xcodebuild 编译它,我必须将部署目标切换到 6.0,这违背了客户的请求。

CI xcodebuild 命令包含一些参数,但这是我用于此测试项目的最小化命令:

xcodebuild -project "MyProject.xcodeproj" -scheme "MyProject"

我尝试添加 FRAMEWORK_SEARCH_PATHSHEADER_SEARCH_PATHSALWAYS_SEARCH_USER_PATHS 参数,以防 xcodebuild 无法使用项目文件中包含的路径,但这没有任何区别。

如果我从项目中删除 drmNativeInterface 框架 - 单独留下 2 个基于 Apple 的依赖项 - 该项目可以很好地编译 Xcode 和 xcodebuild。但显然这不是解决方案,因为我需要那个框架!

有没有人知道可能导致此问题的原因或解决方法?

**注意:**

There are a lot of questions on SO where projects will build in Xcode and not in xcodebuilder, but I couldn't find any where a project will build in xcodebuilder just fine for one deployment target and not for another.

提前致谢。

链接 libstdc++ 库(在本例中,准确地说是 libstdc++6.dylib)解决了问题。

您在 Link Binary With Libraries 中失去了 libstdc++6.dylib 只需添加它: