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} 头文件路径
(应该是这么个意思)