Xcode 4.2 如何编译静态库

转载 2012年03月27日 11:00:40
找了个教程 补上:转自(有图):http://blog.sina.com.cn/s/blog_4cd8dd130100ut5r.htmlXcode4中使用静态库1. 创建一个工作区:".xcworkspace"2. 将项目添加到工作区(新建/添加现有项目)3. 向应用程序target添加静态库,从Workspace4. 打开 “Build Settings” 标签,设置 “User Header Search Paths” 项的值为 “$(BUILT_PRODUCTS_DIR)”,并选中“Recursive”框5. 设置“Other Linker Flags”项的值为“-ObjC”6. 打开scheme,设置build顺序,将静态库添加进来,并放在程序前面7. 从静态库项目中拖动公共头文件到应用程序项目,这些头文件不需要被包括在target中创建静态库1. 将所有需要公开的头文件在“Target Membership”中将其设置为“public”2. 打开 “Build Settings” ,设置“Installation Directory”的值为“$(BUILT_PRODUCTS_DIR)”;并设置“Skip Install”的值为“Yes”3. 设置“Public Headers Folder Path”的值为 “$(TARGET_NAME)”.然后 Edit Scheme pane (Product > Edit Scheme), change its build configuration to Release,这样就产生一个release模式的静态库,注意release和debug模式的静态库是有区别,如果在引用并把这个模式调错,就会报出“ignoring file /Users/laiqiangzhuo/Desktop/TestLibary/TestLibary/libLibary.a, missing required architecture i386 in file“的错误iOS开发:xcode4中使用静态库和工作区在xcode4中,为了将一些比较独立的功能封装起来,或者多人同时开发时,需要将程序打包成静态库,但在xcode4中设置工作区、工程和静态库等遇到了一系列问题,不知道是不是xcode的高版本中已经解决了这些问题?我用的是xcode4.0(4A304a), SDK是4.3。从网上能够查到的写的比较全面的使用和建立静态库的文章是CarbonFive的这篇文章。但我按照这个文章逐个试验后,发现几个地方跑不通,经过一番尝试,终于在我的机器上把详细的设置步骤跑通了。xcode4中的几个基本概念工作区(Workspace):在xcode4中引入了这个概念,能够把project统一管理起来,这功能在VisualStudio中是很早就有的功能。工程(Project):工作区里管理着一些工程,相关的源程序和资源都在这里面。Scheme:这个概念取代了xcode3中的Active Target, Build Configuration, and Executable settings,具体含义不太了解,但只知道它执行了一组build动作,在xcode的顶端工具条上可以快速切换不同的scheme。构建目标(Target):构建目标指定了一系列的编译和连接设置,对于静态库就是生成一个.a文件。还有一个group不知道是什么概念,因为在文件的location属性中有个“Relative to Group”设置。这些一大堆概念到现在还只是略知一二,后面用的多了会理解慢慢深刻一些吧。生成静态库在新建工程时,需要选择“cocoa Touch Static Library”这个模板,一阵子Next后,可以建出一个工程,我这里取名为testlib。为了测试,我建了一个类MyClass,生成MyClass.h和MyClass.m两个文件。(1)公开头文件要选中.h文件,将Target Membership中设置为public。(2)设置安装路径在testlib的工程设置里面,找到testlib构建目标,在Build Settings中找到"Installation Directory"一项(可设置的项非常多,建议在搜索框中输入install来快速查找定位),填上“$(BUILT_PRODUCTS_DIR)”,将Skip Install设置为Yes。$(BUILT_PRODUCTS_DIR)这个环境变量在工作区的build/debug-iphoneos路径下,最好在构建的过程中去打开Finder看看这个目录里有什么变化。下图的这个目录层次结构也非常重要,我把工作区和工程调整成下面这种结构了。(3)设置公开头文件的路径在英文的那篇博文中说将这里设置为“$(TARGET_NAME)”,是指将生成的头文件放在一个目录中,在本程序中,会在/build/debug-iphoneos/中生成一个testlib目录,在这个目录中有一个文件MyClass.h文件。设置完成前面的三步,可以执行Build操作了,如果一切顺利,会在Products中看到libtestlib.a由红变黑了,表示这个文件生成了,点击这个文件可以看到详细信息,如果看不到,就说明哪个设置还是有问题的。下面一步非常关键:如果有问题,需要在xcode的系统设置中把Locations设置一下,如下图,设置完成后需重启xcode才能生效!我用xcode的默认设置,那个.a文件一直放在一个长长的非常难看的路径中,不知道apple为什么要这样做?是为了支持多个版本的静态库?使用静态库加上一个工程,我这里命名为mainprog,让它依赖testlib,我在主程序中加了一条#import "MyClass.h"语句,只要这条语句能够编译,整个工作区和工程应该设置的就没问题了。(1)设置依赖关系在mainprog工程的build phases中,将libtestlib.a加到link Binary With Libraries中。(2)添加静态库的头文件搜索路径这一步最迷惑人了,先在Build Settings中,将User Header Search Paths设置为“$(BUILT_PRODUCTS_DIR)”。然后双击那个显示“”的地方,弹出一个对话框(这个窗口隐藏的相当深,我找了足足半天才发现,一开始还以为我的xcode版本有点低呢),把Recursive勾上。(3)设置Scheme加上了依赖关系,按照以前VisualStudio的习惯,整个构建过程应该按照这些依赖关系的顺序来构建了吧,可发现xcode现在还没有这么聪明,需要再设置一下scheme,据说(从apple的xcode文档中查的)勾上那个Archive非常重要。(4)让自动完成功能正常待完成。全部步骤完成了,选择mainprog的scheme,应该能够构建成功了!补充一下:那个目录结构也非常重要,用xcode建的工程会多产生出一级目录来,我建一个MyProduct目录,用Finder将工程目录和工作区文件都移到这里面,然后再重新打开工作区,将这些工程重新添加到工作区中,看起来就舒服多了。

Xcode 之自己编译静态库

今天介绍下,如何利用Xcode,
  • jiajiayouba
  • jiajiayouba
  • 2014年08月07日 18:28
  • 19269

xcode 创建静态库和动态库

1、linux中静态库和动态库区别: 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 静态库:这类库的名字一般是libxxx.a;利用静态函数库编译成的文件...
  • u012390519
  • u012390519
  • 2014年11月24日 11:51
  • 3156

shell 脚本编译静态库

iOS脚本编译静态库
  • liuzhuanshaonian
  • liuzhuanshaonian
  • 2016年06月14日 12:20
  • 467

xcode 编译静态库所要注意

一 建立静态库 1. 生成静态库工程 2. release/debug 的选择  scheme 3. 编译(注意真机与模拟器的产物)==》  lipo -create 【源文件路径1】  【源...
  • agonie201218
  • agonie201218
  • 2016年07月02日 09:59
  • 410

Mac OS 下手动编译静态库及Xcode中使用该静态库的例子(二)

第二部分 在Xcode中调用静态库 前言 在使用Xcode创建app时,通常需要调用一些第三方提供的静态库,这部分将详细讲述如何调用前面我们创建的静态库libperson.a。 启动Xcode并创建一...
  • runfarther
  • runfarther
  • 2017年01月12日 17:21
  • 729

Xcode  制作静态库 .a文件的具体步骤

详细介绍使用Xcode制作静态库文件的具体步骤
  • a359696929
  • a359696929
  • 2016年04月12日 23:50
  • 2816

Xcode7 中创建静态库:.a 和 .framework(一)

本文是根据项目中使用的静态库来总结下如何创建.a和.framework两种静态库,具体关于两种静态库的区别就不在这里进行介绍了 .a静态库创建的步骤说明 1.新建项目,点击iOS->Fram...
  • csjiangchao5
  • csjiangchao5
  • 2016年04月17日 10:49
  • 1397

iOS开发之静态库的生成、静态库的合并、静态库使用

静态库的生成与使用 如何利用Xcode生成静态库呢?下面一起来学习吧。 首先是如何新建.a类型的静态库。 首先新建一个工程,如下图,选中生成.a静态库, Snip20151...
  • zhonggaorong
  • zhonggaorong
  • 2016年07月11日 10:09
  • 5083

Xcode8如何创建 .a 静态SDK库

标签:软件开发工具包(外语首字母缩写:SDK、外语全称:Software Development Kit)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的...
  • sinat_16714231
  • sinat_16714231
  • 2016年10月17日 11:39
  • 1736

xcode生成通用(模拟器/真机).a静态库

静态库的编写: 1.静态库工程的建立: Xcode New一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static Lib...
  • canglang_123
  • canglang_123
  • 2013年03月11日 10:58
  • 1928
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Xcode 4.2 如何编译静态库
举报原因:
原因补充:

(最多只允许输入30个字)