ios链接库.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:7 大小:388KB 金币:14 举报 版权申诉
预览加载中,请您耐心等待几秒...

ios链接库.doc

ios链接库.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

14 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"http://www.cnblogs.com/speeding/archive/2011/09/29/2195252.html"iOS开发:xcode4中使用静态库和工作区在xcode4中,为了将一些比较独立的功能封装起来,或者多人同时开发时,需要将程序打包成静态库,但在xcode4中设置工作区、工程和静态库等遇到了一系列问题,不知道是不是xcode的高版本中已经解决了这些问题?我用的是xcode4.0(4A304a),SDK是4.3。从网上能够查到的写的比较全面的使用和建立静态库的文章是HYPERLINK"http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/"CarbonFive的这篇文章。但我按照这个文章逐个试验后,发现几个地方跑不通,经过一番尝试,终于在我的机器上把详细的设置步骤跑通了。更新记录:2011年9月29日,完成了初稿。2011年10月30日,更正了目录结构,xcode中Location还是使用默认设置才对。xcode4中的几个基本概念工作区(Workspace):在xcode4中引入了这个概念,能够把project统一管理起来,这功能在VisualStudio中是很早就有的功能。工程(Project):工作区里管理着一些工程,相关的源程序和资源都在这里面。Scheme:这个概念取代了xcode3中的ActiveTarget,BuildConfiguration,andExecutablesettings,具体含义不太了解,但只知道它执行了一组build动作,在xcode的顶端工具条上可以快速切换不同的scheme。构建目标(Target):构建目标指定了一系列的编译和连接设置,对于静态库就是生成一个.a文件。还有一个group不知道是什么概念,因为在文件的location属性中有个“RelativetoGroup”设置。这些一大堆概念到现在还只是略知一二,后面用的多了会理解慢慢深刻一些吧。生成静态库在新建工程时,需要选择“cocoaTouchStaticLibrary”这个模板,一阵子Next后,可以建出一个工程,我这里取名为testlib。为了测试,我建了一个类MyClass,生成MyClass.h和MyClass.m两个文件。(1)公开头文件要选中.h文件,将TargetMembership中设置为public。(2)设置安装路径在testlib的工程设置里面,找到testlib构建目标,在BuildSettings中找到"InstallationDirectory"一项(可设置的项非常多,建议在搜索框中输入install来快速查找定位),填上“$(BUILT_PRODUCTS_DIR)”,将SkipInstall设置为Yes。$(BUILT_PRODUCTS_DIR)这个环境变量在工作区的build/debug-iphoneos路径下,最好在构建的过程中去打开Finder看看这个目录里有什么变化。(3)设置公开头文件的路径在英文的那篇博文中说将这里设置为“$(TARGET_NAME)”,是指将生成的头文件放在一个目录中,在本程序中,会在/build/debug-iphoneos/中生成一个testlib目录,在这个目录中有一个文件MyClass.h文件。设置完成前面的三步,可以执行Build操作了,如果一切顺利,会在Products中看到libtestlib.a由红变黑了,表示这个文件生成了,点击这个文件可以看到详细信息,如果看不到,就说明哪个设置还是有问题的。下面一步非常关键:如果有问题,需要在xcode的系统设置中检查Locations设置,在xcode的Preferences…->Locations->BuildLocation里,选“Placebuildproductsinderiveddatalocation(recommended)”,设置完成后需重启xcode才能生效!用xcode的这个默认设置,那个.a文件一直放在一个长长的非常难看的路径中(/Users/xxx/Library/Developer/Xcode/DerivedData/xxxProgram-dalrvzehhtesxdfqhxixzafvddwe/Build/Products/Debug-iPhoneos),不知道apple为什么要这样做?是为了支持多个版本的静态库?使用静态库加上一个工程,我这里命名为mainprog,让它依赖testlib,我在主程序中加了一条#import"MyClass.h"语句,只