我想在项目中使用静态库。静态库取决于几个框架... CoreData,CFNetwork,AddressBook等在XCode中使用静态库时必须链接二进制库两次
静态库也使用类别,所以我不得不在主项目的“其他链接器设置”中使用-all_load链接器选项。当我启用这个功能时,我得到的120个错误都与我的主项目没有被链接到与我的静态库(CoreData,CFNetwork,AddressBook等)相同的框架中。
开发人员想要使用静态库,链接到它,但仍然需要链接到库链接的所有框架,这是非常不方便的。有什么办法可以自动执行这个过程,这样主项目会自动链接到静态库链接的所有框架?
我正在使用XCode 4.4。
编辑:要更清楚,我有以下几点:
StaticLibrary.xcodeproj
- AFNetworking
- files...
- CoreData
- categories for NSManagedObjectContext, for convenience
- AddressBook
- convenience methods for working with contacts
这个项目的目标是在构建阶段>链接二进制与图书馆联系到必要的框架。这包括CoreData.framework,AddressBook.framework等。
现在我想要做的是将这个库添加到我的另一个项目。实际上,我想将这个库添加到我从此出来的每个新项目中,因此我总是可以轻松访问我编写的便利功能/类别。所以:我将库添加到我的项目中,然后将.a
文件添加到“构建阶段”>“链接二进制库(我的主项目)”中。我也做了我所知道的其他一切(见评论)。
我想要发生的事情是:主项目现在链接到库,所以它继承了库的所有链接,因此主项目现在也链接到CoreData.framework,AddressBook.framework等。
发生了什么:主项目给我错误,因为它没有链接到库需要的任何东西。
有没有办法从静态库自动添加链接的框架到主项目,或者我应该将库分成CoreDataStaticLibrary等,然后要求开发人员添加CoreData.framework以及静态图书馆每次到项目目标?
我认为Xcode尝试将所有源代码链接到可执行文件而不是静态库。你确定你使用了适当的设置吗? – 2012-09-07 17:12:05
将库xcodeproj拖到我的主项目中。我在我的主项目中添加了“Target Dependencies”库。我在我的主项目中添加了库的.a文件以“链接Binary与库”。我在主项目的构建设置中将“-all_load”添加到其他链接设置。我将主项目的标题搜索路径更改为库目录,并进行递归。我错过了什么吗? –
我有类似的问题,并没有找到一种方法来使用all_load标志呢,我可以建议的唯一办法就是尝试使用-force_load标志,或者将类别放入IOS通用框架中。 [链接](https://github.com/kstenerud/iOS-Universal-Framework)。如果你可以用-force_load来完成,那么这可能是一个更好的解决方案。 –