标签: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 staticlibaray
原文地址:http://blog.csdn.net/barryclass/article/details/47067339