静态库

jverkoey大牛的ios静态库blog

https://github.com/jverkoey/iOS-Framework

扩展阅读

1.静态库:
Library vs Framework in iOS
2.资源包
http://blog.csdn.net/zhaoyya/article/details/50543881
3.自动打包
参考jverkoey的脚本
4.独立工程例子

静态库.a文件合成脚本

例:(我的项目的代码例子)

set -e

mkdir -p "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework/Versions/${FRAMEWORK_VERSION}/Headers"

# Link the "Current" version to "${FRAMEWORK_VERSION}"
# 简单粗暴的理解是,创建快捷方式
ln -sfh ${FRAMEWORK_VERSION} "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework/Versions/Current"
ln -sfh Versions/Current/Headers "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework/Headers"
ln -sfh "Versions/Current/${PRODUCT_NAME}" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework/${PRODUCT_NAME}"

# The -a ensures that the headers maintain the source modification date so that we don't constantly
# cause propagating rebuilds of files that import these headers.
# 拷贝头文件
cp -a "${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework/Versions/${FRAMEWORK_VERSION}/Headers"

分析:

set -e

你写的每个脚本都应该在文件开头加上set -e,这句语句告诉bash如果任何语句的执行结果不是true则应该退出。这样的好处是防止错误像滚雪球般变大导致一个致命的错误,而这些错误本应该在之前就被处理掉。如果要增加可读性,可以使用set -o errexit,它的作用与set -e相同。

Unix/Linux 脚本中 “set -e” 的作用

http://blog.csdn.net/todd911/article/details/9954961


mkdir -p

如果要创建目录A并创建目录A的子目录B,没有用-p的情况下是mkdir 2次
如果用-p 可以直接创建2个目录 mkdir -p 目录A/子目录B就可以

ln -sfh

其实拆解来看就是 ln -s f h 三个命令功能
命令参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
(PS:这个例子是别人写的,执行是没有问题的,这里的h估计是help的意思,也可能多打了.理解前面的就可以了)

# 后面的都为注释

cp -a

Linux cp -a用法
对于cp -a最主要的用法是在保留原文件属性的前提下复制文件。

"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework/Versions/${FRAMEWORK_VERSION}/Headers"
路径地址:Users/llg/Library/Developer/Xcode/DerivedData/AcGameSDK-gghelwshltfitdgoubtwrhwblxwz/Build/Products/Debug-iphonesimulator/GamaterSDK.framework/Versions

${BUILT_PRODUCTS_DIR}  
Users/llg/Library/Developer/Xcode/DerivedData/AcGameSDK-gghelwshltfitdgoubtwrhwblxwz/Build/Products/Debug-iphonesimulator/
        
${PRODUCT_NAME}                     GamaterSDK            
${FRAMEWORK_VERSION}                     framework的版本
${TARGET_BUILD_DIR}                   目标路径
${PUBLIC_HEADERS_FOLDER_PATH}            头文件路径           
(应该是这么个意思)

你可能感兴趣的:(静态库)