Ale*_*lex 42 cocoa cocoa-touch objective-c static-libraries
我有一些Objective-C类,我目前在Cocoa应用程序(Mac OS X)和Cocoa-Touch应用程序(iOS)中都使用它.目前,当我更新这些类时,我必须将更新的文件.h和.m文件复制到这两个项目中.没那么大的交易,但我将在更多的项目中使用它们.
所以,我想将这些类构建到Objective-C静态库中.然后在所有其他项目中链接该库.
有没有办法构建一个静态库,以便它适用于Cocoa和可可触摸应用程序?
我试过用这些类构建一个Cocoa静态库,但是当我尝试在我的Cocoa应用程序中链接该库时,我遇到了各种错误,我确信它们来自我没有这样做的事实对.
那么,我如何以正确的方式构建Objective-C静态库?我是否必须构建Cocoa-Touch和Cocoa静态库?或者我可以做一个吗?这是怎么做到的?
有没有关于这个主题的完善的教程?
我在网上搜索过,似乎无法找到关于这个主题的综合教程,所以我在这里提出了一个问题,希望能够发布一个很好的答案,这个问题可以作为我和未来提问者的资源.
Joh*_*ger 25
对于XCode 5.这些答案似乎有些过时了.您可以在这里看到主要步骤http://www.raywenderlich.com/41377/creating-a-status-library-in-ios-tutorial.但是Xcode 5为你做了很多工作,现在几乎可以按照你的意愿工作.
1.在Xcode中创建新的静态库应用程序

2.您可以删除它创建的任何文件并添加自己的文件.添加你的方法等
3.静态库的一个小问题是,您只能为设备构建或在模拟器中运行.因此我们需要创建一个支持ARM和i386架构的库,为此我们需要创建一个通用二进制文件(因此它将支持模拟器和设备构建).
创建一个新目标(文件>新建>目标).

4.选择New Target然后添加新的构建阶段(编辑器>添加构建阶段>添加运行脚本构建阶段

5.选择构建阶段并从此链接输入脚本到运行脚本窗口. https://gist.github.com/sponno/7228256

6.现在需要构建每个架构(模拟器和iOS设备)
6.2.选择我们的库,然后选择iOS设备,点击构建或运行(Command + B)
6.3.然后为模拟器(选择Xcode最左上方的库图标,然后选择iOS模拟器)

7.现在你想建立BullsEye图标> iOS设备.这将是聚合目标,并将我们的两个库组合成一个新的通用文件.
让我们看看这一切是否奏效.展开左侧树中的"Products"文件夹,右键单击以".a"结尾的文件和"在Finder中显示"
9.如果这一切都有效,你应该在finder中看到以下文件.你会看到的

10.最后一步很简单,只需将"library.a文件和includes文件夹"拖到新的Xcode项目中即可.


在您的新项目中,除了导入要使用的头文件之外,您不必执行任何其他操作,但您不必更改链接标记或标题搜索路径.它会起作用.
(任何反馈意见)或请编辑我的帖子,以提高清晰度.
**奖励积分***安装VVD 文件管理器https://github.com/onevcat/VVDocumenter-Xcode并使用它来记录您将与库共享的任何header.h文件.
现在,任何使用您的库的人都可以选择+单击以为您的课程提供上下文感知帮助.

jus*_*tin 11
(以教程为出发点)
现在在库xcodeproj中为另一个OS创建第二个目标.
使用xcconfig文件(每个操作系统一个)配置每个目标的sdk设置.在其他库中重用这些xcconfig文件.这也允许轻松全局控制构建设置.
像往常一样在目标(apps)中配置链接和依赖项引用,但选择正确的目标库.
将聚合目标添加到库项目中,以进行简单的元编译/轻松维护.
- 要么 -
通过引入脚本层或创建自定义构建工具来完成所有工作.
| 归档时间: |
|
| 查看次数: |
21757 次 |
| 最近记录: |