码迷,mamicode.com
首页 > 移动开发 > 详细

ios 静态库(static libarary) 的使用

时间:2015-07-26 14:19:02      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:ios   staticlibaray   

(账号找到了,从新博客迁移回来)

静态库:是一种在多个application中共享使用同一份代码的机制。

先建一个single ViewController的Project,然后在左边侧栏下右建新建 NewFile ->Framwork&Libarary->StaticLibaray

技术分享

技术分享

建成后的结果如下:

技术分享

选择StaticLibaray,Cmd + B build,这时Products中的 libStaticLinaray.a会变为黑色,说明编译成功了。


切换到Project,添加Libaray

技术分享

导入的#import "StaticLibaray.h"仍然显示 file not Found. 这是因为iOSStaticLibaray 现在还搜索不到StaticLibaray.h。我们需要设置一下Project的头文件搜索路径。

技术分享



现在需要知道静态库的路径, 选择libStaticLibaray-> show in finder

技术分享

这就是点StaticLibarary的路径,我们只要把这些添加到 Hears Search Path 中,在不同的mac上这个路径肯定不一样,所以我们需要用到系统的几个宏。

+  $(BUILT_PRODUCTS_DIR)

build/Products/Debug-iphoneos

build成功后的,最终产品路径--可以在Build Settings参数的Per-configuration Build Products Path项里设置


+  $(TARGET_NAME)

目标工程名称


+  $(SRCROOT)

工程文件(比如Nuno.xcodeproj)的路径


+ $(CURRENT_PROJECT_VERSION)


+ $(inherited)


+ $(BUILD_DIR)                                 "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath"


+ $(BUILD_ROOT)                                "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath"

+ $(BUILD_VARIANTS)                           normal


+ $(BUILD_DIR)                                 "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath"


+ $(BUILD_ROOT)                                "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath"

+ $(BUILD_VARIANTS)                           normal


+ $(EFFECTIVE_PLATFORM_NAME)  ‘iphoneos‘ or ‘iphonesimulator)


我们现在Head Search Path Debug里添加 $(BUILT_PRODUCTS_DIR)/include/StaticLibaray ,run 没问题了。 debug模式下我信已解决, 下面看 release 模式下

现在切回到StaticLibarary,Product->Archive

然后再到Project , Product->Archive 发现又 not found file 了, 这是因为我们还没设置release 的路径,现在我们去找一下release的路径

/Users/barryclass/Library/Developer/Xcode/DerivedData/iOSStaticLibaryDemo-hitdffgifzihnjehziiwfvgvagxy/Build/Intermediates/ArchiveIntermediates/StaticLibaray/BuildProductsPath/Release-iphoneos/include/StaticLibaray

技术分享

参考上面的宏,我们可以写成

$(BUILD_ROOT)/Release-{EFFECTIVE_PLATFORM_NAME}/include/StaticLibaray/

我们现在Head Search Path Release里添加 $(BUILT_PRODUCTS_DIR)/include/StaticLibaray ,Archive 没问题了。 g搞定。

我们的这些设置都是要工程Project里设置,而不是在单个target,当然也可以直接在target中进行设置。

技术分享

在Project里设置后我们在target中对应的项中添加 $(inherited) ,表示继承project中的设置。


如果我们在StaticLibaray 中新建一个类,然后在StaticLibaray中的 Build Phases -> Copy Files 中添加新加的.h 文件就可以了,然后编译,就可以在Project中使用了。但是又有一个新问题,只要对静态库做了更改我们就必须去先build静态库,这样修改才能生效。如果我们把静态库变成Project的依赖就不必要去手动build静态库了,每次build project的时候就会自动去build。

选择iOSStaticLibararyDemo , 选择target -> build Phases -> Target Dependencies 点击下面的加号,发现并没有我们要添加的静态库。别着急,我们只要直接把StaticLibaray拖到iosStaticLibaryDemo中就可以了

技术分享

这是再点击加号添加

技术分享

搞定!


版权声明:本文为博主原创文章,未经博主允许不得转载。

ios 静态库(static libarary) 的使用

标签:ios   staticlibaray   

原文地址:http://blog.csdn.net/barryclass/article/details/47067339

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!