针对iOS 8 SDK构建的静态库与Metal框架链接

前端之家收集整理的这篇文章主要介绍了针对iOS 8 SDK构建的静态库与Metal框架链接前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在构建我使用iOS 8 SDK编写的静态库时,生成的库链接到金属框架:

$otool -arch all -fl <static library>

...
Load command 12
 519      cmd LC_LINKER_OPTION
 520  cmdsize 32
 521    count 2
 522   string #1 -framework
 523   string #2 Metal
...

我认为这是通过UIKit;我不直接链接它,’与标准库链接’是NO.这会导致Xcode 5.1.1与iOS 7出现问题,因为该框架不存在.使用Xcode 5构建静态库并不与金属链接,但我宁愿用Xcode的最新生产版本构建,在某些时候我将不得不解决这个问题.如何使用Xcode 6构建并解决Xcode 5用户的这个问题?

另见另一位有这个问题的开发人员,他只是使用了他所需的特定框架,但没有与Metal链接,但我不能这样做,因为我需要与UIKit链接
https://github.com/card-io/card.io-iOS-SDK/issues/66
https://github.com/CocoaPods/CocoaPods/issues/2457

解决方法

戴夫来自card.io.即,上面引用的“另一个开发者”.

我们的解决方案应该适合您,在构建我们的静态库时设置为NO两个构建设置:CLANG_ENABLE_MODULES和CLANG_MODULES_AUTOLINK(a.k.a启用模块(C和Objective-C)和自动链接框架).

在禁用这些模块设置的情况下构建库将完全消除LC_LINKER_OPTION命令.

使用您的库的应用程序可以启用或不启用这些模块设置.应用程序(而不是您的库)必须包含UIKit.framework等,可以通过模块自动包含,也可以手动作为“链接库”.

猜你在找的Xcode相关文章