做了几个App之后,想把工作过程中的一些公共部分抽取出来,便于以后复用,提高效率。
今天试了一下在 Xcode 中制作静态库的方法
运行环境:Xcode 4.3 Build 4D1002
准备工作:
- 创建一个名为:StaticLibTest 的 workspace;
- 创建一个名为:CallLibApp 的 Single View Application;
- 创建一个名为:MyLib 的 Cocoa Touch Static Library,Group 选择 StaticLibTest;
Lib 设置:
- Scheme 中选择“MyLib > iOS Device”,然后编译;
此时在 Products 文件夹中的 libMyLib.a 由红变黑; - 进入命令行
cd /Users/xxx/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphoneos
lipo -info libMyLib.a
输出:
Non-fat file: libMyLib.a is architecture:armv7
- 选中 MyLib.h,在 Target Membership 中选中 Mylib,并将属性修改为 Public,重新编译;
此时在 Debug-iphoneos 文件夹中会增加一个 usr/local/include 的文件夹,其中存放着 MyLib.h 文件;
-
在 MyLib 的工程属性中,选择 Targets - MyLib - Build Settings 然后选中“Public Headers Folder Path”将属性修改为:“$(TARGET_NAME)”,如下图所示:
重新编译,此时在 Debug-iphoneos 文件夹中会增加一个名为 MyLib 的文件夹,MyLib.h 存放在其中,这样方便应用程序调用。
App 设置:
- 在 App 的 Targets - Build Phases - Link Binary With Libraries 中增加 libMyLib.a 的静态库;
下面到了关键的步骤了,呵呵,就是如何让 App 能够找到 .h 文件。
-
在 App 的 Build Settings 中找到 “User Header Search Paths”,双击,并输入:$(BUILT_PRODUCTS_DIR) 如下图所示:
记得要勾上“Recursive”