记录编译开始时间(自己的脚本一定要放在最前面,否则项目不会使用修改完成后的内容)
# Type a script or drag a script file from your workspace to insert its path. app_build_time_path=${SRCROOT}/app_build_time.txt info_plist_path=${SRCROOT}/$TARGET_NAME/Info.plist app_build_date='APP_BUILD_DATE' build_date=`date '+%Y-%m-%d %H:%M:%S'` if [ -f $app_build_time_path ] then echo $build_date > $app_build_time_path echo `date '+%s'` >> $app_build_time_path fi echo "此次构建开始时间为$build_date" last_build_date=`/usr/libexec/PlistBuddy -c "Print :$app_build_date" ${info_plist_path}` if [[ -n $last_build_date ]]; then /usr/libexec/PlistBuddy -c "Set :$app_build_date $build_date" ${info_plist_path} echo "上次构建开始时间为$last_build_date" /usr/libexec/PlistBuddy -c Save ${info_plist_path} echo "更新编译时间完成" else /usr/libexec/PlistBuddy -c "Add :$app_build_date string $build_date" ${info_plist_path} /usr/libexec/PlistBuddy -c Save ${info_plist_path} echo "设置编译时间完成" fi
app_build_time.txt 这是我配置的一个文件,不需要可以忽略掉
变量赋值,不能有空格,否则报错
字符串拼接不写+号
echo $text > $filepath 将字符串输出到文件
常用的宏和常量
参考内容:
Xcode中的常量和环境变量
$CURRENT_PROJECT_VERSION 当前工程版本号
$SDK_NAME eg: iphonesimulator5.0
$PLATFORM_NAME eg:iphonesimulator
$EXECUTABLE_NAME eg:libUtilLib.a 可执行文件名
$IPHONEOS_DEPLOYMENT_TARGET eg:5.0
param description
$TARGET_NAME 目标 target 名称
$CONFIGURATION 当前编译配置文件名称。eg:Debug、Release
$ACTION 当前编译处于哪个阶段。eg: build、compile
$NS_BLOCK_ASSERTIONS 控制断言开、关(OC)
$PROJECT_DIR 工程文件所在路径
$SRCROOT 源代码所在路径,一般情况下和 $PROJECT_DIR 相同
$BUILT_PRODUCTS_DIR build 成功后的,最终产品路径。包括 .app。可以在 Build Settings 下的 Build Products Path 中进行设置
$BUILD_DIR build 文件夹。$BUILT_PRODUCTS_DIR 是该文件夹的子文件夹
$BUILD_ROOT 一般和 $BUILD_DIR 相同(至于什么时候不同还没有详细探究)
$SYMROOT 测设结果和上面相同
* @executable_path
这个变量表示可执行程序所在的目录. 比如 /path/QQ.app/Contents/MacOS/。使用第三方动态库时需要设置这个值
@loader_path
这个变量表示每一个被加载的 binary (包括App, dylib, framework,plugin等) 所在的目录.
在一个程序中, 对于每一个模块, @loader_path 会解析成不用的路径, 而 @executable_path 总是被解析为同一个路径(可执行程序所在目录). 比如一个会被多个程序调用的 plugin, 位于 /path/Flash Player.plugin/Contents/MacOS/Flash Player, 依赖 /path/Flash Player.plugin/Contents/Frameworks/XPSSO.dylib. 那么 XPSSO.dylib 的 INSTALL_PATH 可以设置为 @loader_path/../Frameworks, 这样设置的话, 不论 Flash Player.plugin 目录放到什么位置, XPSSO.dylib 都能正确的被加载.
————————————————
版权声明:本文为CSDN博主「kaiyuanheshang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kaiyuanheshang/article/details/50284345