Build Library By xcodebuild
2014-04-15 12:05
465 查看
#!/bin/bash
#
# 介绍:
# 这个脚本全部自动化编译各指令集静态库后合并。现在支持指令集有armv7 armv7s arm64 i386 x86_64
#
# 使用:
# 首先cd 到xcode工程目录 然后运行 "sh ./build.sh" PS:xcode不能含有xcodebuild的Runscript切记!
#
# 验证:
# cd 到静态库目录 然后 "lipo -info 静态库名称.a "
#
# TODO :
# 1.完成宏定义,解决多次修改工程名字的问题
# 2.增加SVN、GIT版本号
# 3.增加Buildnotes
# 4.完成规范化命名
#
#工程的名字
MY_PROJECT_NAME="ProjectName.xcodeproj"
#编译target的名字
MY_TARGET_NAME="ProjectName"
#LIB名字
MY_STATIC_LIB="lib${PROJECT_NAME}.a"
#编译路径
# 编译静态库名称路径
LIB_DIR = 'tmp/'
#合并静态库文件路径
LIB_FINAL_PATH= "${LIB_DIR}/FinalLib"
#如果目标文件不存在则创建
if [ ! -d "${LIB_DIR}" ]; then
mkdir -p "${LIB_DIR}"
fi
if [ ! -d "${LIB_FINAL_NAME}" ]; then
mkdir -p "${LIB_FINAL_NAME}"
fi
# armv7 armv7s
MY_ARMV7_BUILD_PATH='temp/armv7'
MY_CURRENT_BUILD_PATH="${MY_ARMV7_BUILD_PATH}"
xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release' -sdk 'iphoneos7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='armv7 armv7s' VALID_ARCHS='armv7 armv7s' IPHONEOS_DEPLOYMENT_TARGET='5.0' clean build
MY_ARMV7S_BUILD_PATH='temp/armv7S'
MY_CURRENT_BUILD_PATH="${MY_ARMV7S_BUILD_PATH}"
xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release' -sdk 'iphoneos7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='armv7s' VALID_ARCHS='armv7s' IPHONEOS_DEPLOYMENT_TARGET='5.0' clean build
# arm64 代码未修改所以报错
MY_ARM64_BUILD_PATH='temp/arm64'
MY_CURRENT_BUILD_PATH="${MY_ARM64_BUILD_PATH}"
xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release' -sdk 'iphoneos7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='arm64' IPHONEOS_DEPLOYMENT_TARGET='7.0' clean build
# i386
MY_I386_BUILD_PATH='temp/i386'
MY_CURRENT_BUILD_PATH="${MY_I386_BUILD_PATH}"
xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release' -sdk 'iphonesimulator7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='i386' VALID_ARCHS='i386' IPHONEOS_DEPLOYMENT_TARGET='5.0' clean build
# x86_64 代码未兼容所以报错
MY_X86_64_BUILD_PATH='temp/x86_64'
MY_CURRENT_BUILD_PATH="${MY_X86_64_BUILD_PATH}"
xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release' -sdk 'iphonesimulator7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='x86_64' VALID_ARCHS='x86_64' IPHONEOS_DEPLOYMENT_TARGET='7.0' clean build
# #####################
#
# # # 需要重新设置编译target的名字,
#
# #####################
# TARGET 名字
MY_TARGET_NAME="AudioService"
#LIB名字
MY_STATIC_LIB="lib${MY_TARGET_NAME}.a"
#最终静态库路径
MY_FINAL_BUILD_PATH='lib/'
#最终静态库名字
MY_FINAL_STATIC_LIB="AudioService.a"
if [ ! -d "${MY_FINAL_BUILD_PATH}" ]; then
mkdir -p "${MY_FINAL_BUILD_PATH}"
fi
# 合并不同版本的编译库
lipo -create "${MY_ARMV7_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_ARMV7S_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_ARM64_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_I386_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_X86_64_BUILD_PATH}/${MY_STATIC_LIB}" -output "${MY_FINAL_BUILD_PATH}${MY_FINAL_STATIC_LIB}"
# lipo -create "${MY_ARM_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_I386_BUILD_PATH}/${MY_STATIC_LIB}" -output "${MY_FINAL_BUILD_PATH}${MY_FINAL_STATIC_LIB}"
# rm -rf 'temp'
# rm -rf 'build'
open "${MY_FINAL_BUILD_PATH}"
#
# 介绍:
# 这个脚本全部自动化编译各指令集静态库后合并。现在支持指令集有armv7 armv7s arm64 i386 x86_64
#
# 使用:
# 首先cd 到xcode工程目录 然后运行 "sh ./build.sh" PS:xcode不能含有xcodebuild的Runscript切记!
#
# 验证:
# cd 到静态库目录 然后 "lipo -info 静态库名称.a "
#
# TODO :
# 1.完成宏定义,解决多次修改工程名字的问题
# 2.增加SVN、GIT版本号
# 3.增加Buildnotes
# 4.完成规范化命名
#
#工程的名字
MY_PROJECT_NAME="ProjectName.xcodeproj"
#编译target的名字
MY_TARGET_NAME="ProjectName"
#LIB名字
MY_STATIC_LIB="lib${PROJECT_NAME}.a"
#编译路径
# 编译静态库名称路径
LIB_DIR = 'tmp/'
#合并静态库文件路径
LIB_FINAL_PATH= "${LIB_DIR}/FinalLib"
#如果目标文件不存在则创建
if [ ! -d "${LIB_DIR}" ]; then
mkdir -p "${LIB_DIR}"
fi
if [ ! -d "${LIB_FINAL_NAME}" ]; then
mkdir -p "${LIB_FINAL_NAME}"
fi
# armv7 armv7s
MY_ARMV7_BUILD_PATH='temp/armv7'
MY_CURRENT_BUILD_PATH="${MY_ARMV7_BUILD_PATH}"
xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release' -sdk 'iphoneos7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='armv7 armv7s' VALID_ARCHS='armv7 armv7s' IPHONEOS_DEPLOYMENT_TARGET='5.0' clean build
MY_ARMV7S_BUILD_PATH='temp/armv7S'
MY_CURRENT_BUILD_PATH="${MY_ARMV7S_BUILD_PATH}"
xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release' -sdk 'iphoneos7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='armv7s' VALID_ARCHS='armv7s' IPHONEOS_DEPLOYMENT_TARGET='5.0' clean build
# arm64 代码未修改所以报错
MY_ARM64_BUILD_PATH='temp/arm64'
MY_CURRENT_BUILD_PATH="${MY_ARM64_BUILD_PATH}"
xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release' -sdk 'iphoneos7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='arm64' IPHONEOS_DEPLOYMENT_TARGET='7.0' clean build
# i386
MY_I386_BUILD_PATH='temp/i386'
MY_CURRENT_BUILD_PATH="${MY_I386_BUILD_PATH}"
xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release' -sdk 'iphonesimulator7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='i386' VALID_ARCHS='i386' IPHONEOS_DEPLOYMENT_TARGET='5.0' clean build
# x86_64 代码未兼容所以报错
MY_X86_64_BUILD_PATH='temp/x86_64'
MY_CURRENT_BUILD_PATH="${MY_X86_64_BUILD_PATH}"
xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release' -sdk 'iphonesimulator7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='x86_64' VALID_ARCHS='x86_64' IPHONEOS_DEPLOYMENT_TARGET='7.0' clean build
# #####################
#
# # # 需要重新设置编译target的名字,
#
# #####################
# TARGET 名字
MY_TARGET_NAME="AudioService"
#LIB名字
MY_STATIC_LIB="lib${MY_TARGET_NAME}.a"
#最终静态库路径
MY_FINAL_BUILD_PATH='lib/'
#最终静态库名字
MY_FINAL_STATIC_LIB="AudioService.a"
if [ ! -d "${MY_FINAL_BUILD_PATH}" ]; then
mkdir -p "${MY_FINAL_BUILD_PATH}"
fi
# 合并不同版本的编译库
lipo -create "${MY_ARMV7_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_ARMV7S_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_ARM64_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_I386_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_X86_64_BUILD_PATH}/${MY_STATIC_LIB}" -output "${MY_FINAL_BUILD_PATH}${MY_FINAL_STATIC_LIB}"
# lipo -create "${MY_ARM_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_I386_BUILD_PATH}/${MY_STATIC_LIB}" -output "${MY_FINAL_BUILD_PATH}${MY_FINAL_STATIC_LIB}"
# rm -rf 'temp'
# rm -rf 'build'
open "${MY_FINAL_BUILD_PATH}"
相关文章推荐
- vivi下重新调整分区
- ARM Linux系统启动
- Linux及ARM Linux程序开发笔记(零基础入门篇)
- 用VBScript写合并文本文件的脚本
- SQL 合并多行记录的方法总汇
- GridView单元格合并
- 使用UglifyJS合并/压缩JavaScript的方法
- 高性能WEB开发 JS、CSS的合并、压缩、缓存管理
- 多个js与css文件的合并方法详细说明
- bash脚本输入密码不回显问题的解决方法
- bash 编程中循环语句用法
- Linux BASH多进程并行处理的方法实现
- BASH 学习笔记小结
- 合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
- 用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
- linux BASH shell下设置字体及背景颜色
- linux bash字符串处理大全
- Bash Shell脚本学习小结
- bash批量修改文件名称的方法小结(增加,去除,修改后缀)
- Bash Shell中Shift用法分享