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

时间:2014-09-16 05:06:18

标签: ios xcode

在构建我使用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;我没有直接链接它与标准库的链接&#39;没有。这导致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

1 个答案:

答案 0 :(得分:6)

来自card.io的戴夫。即,另一位开发者&#34;以上引用。

我们的解决方案应该适合您,在构建静态库时设置为NO两个构建设置:CLANG_ENABLE_MODULESCLANG_MODULES_AUTOLINK(又名Enable Modules (C and Objective-C)和{ {1}})。

在禁用这些模块设置的情况下构建库将完全消除Link Frameworks Automatically命令。

使用您的库的应用程序可以启用或不启用这些模块设置。它是应用程序(而不是您的库)必须包含LC_LINKER_OPTION等,可以通过模块自动包含,也可以手动作为链接库&#34;。