Xcode似乎没有执行我的方案的后期行动

时间:2013-05-20 22:51:11

标签: xcode bash

我正在使用Xcode(4.6.2),我的目标是外部构建工具。自动生成的方案在构建期间调用就好了。

在RUNNING上,我希望该方案执行另一个shell脚本。这不直观,但我通过将/bin/bash设置为可执行文件并将我的脚本作为参数传递来管理它。

剩下的唯一步骤是我想在运行后执行另一个脚本。在这里,我认为这很简单,只是试图将其设置为后期行动。

但无论如何,我都无法让xcode执行我的动作后脚本。 无论它是什么。我试过echo hi > /tmp/testfile甚至......

我需要采取后期行动进行一些清理工作。


简而言之:

  1. 我的脚本build_me是我的外部构建工具
  2. 我有一个脚本run_me,我将我的方案设置为
  3. 我有一个脚本cleanup,我希望在行动后运行
  4. 无法让Xcode运行我的动作后脚本或任何

6 个答案:

答案 0 :(得分:7)

这适用于Xcode 5.0,经过测试,我认为它应该在4.6.2中工作相同。

仅当您从程序中退出程序时,后处理才有效

当您单击Xco​​de中的Stop时,它将无法运行,否则将终止该程序。对于我的情况,当我在节目聚焦时按CMD-Q时它会起作用。

使用bash脚本文件进行后期操作

这些设置有效: enter image description here

答案 1 :(得分:3)

我建议您通过将exec > /tmp/xcode_build.log 2>&1添加到运行脚本阶段的开头来启用日志记录。

您可以通过在终端

中运行cat /tmp/xcode_build.log来查看日志

这将允许您打印出路径等,并验证脚本的功能。

要打印脚本的位置,您可以在后期操作中添加以下内容:

exec > /tmp/my_log_file.txt 2>&1
pwd

答案 2 :(得分:2)

这有点奇怪,但是当从命令行调用时,Archive会执行前后脚本。

所以我在我的项目文件夹中创建了一个archive.sh脚本,我将项目名称(与主目标相同 - 但您可以根据需要配置)作为参数:

xcodebuild clean -project $1.xcodeproj -configuration Release -target $1
xcodebuild archive -project $1.xcodeproj -scheme $1

然后我创建一个"外部构建"目标名称"存档",将./archive.sh作为脚本。

当我构建此目标时,Project将被清理,构建和存档。 并执行方案中定义的后期脚本

  

请注意,因为我是从shell脚本构建的,所以我删除了我的   在归档方案中发布脚本,而不是在构建之后调用它   我的archive.sh脚本中的命令。

     

这种方式让我可以更好地控制工作目录和变量   所有......它更方便

答案 3 :(得分:0)

根据您使用的编程语言,您可以这样做(它是伪代码):

system( <command> 2>&1 | tee run.log && exit $PIPESTATUS )

答案 4 :(得分:0)

如果有其他人遇到此问题,我在项目目录中使用了一个脚本文件,并且该文件没有正确的构建过程权限来运行脚本。我在前/后操作/运行脚本区域中执行了以下操作

chmod 755 ${PROJECT_DIR}/BuildScripts/IncrementBuildNumber.sh
${PROJECT_DIR}/BuildScripts/IncrementBuildNumber.sh

答案 5 :(得分:0)

对我来说,“不起作用”的原因是我的脚本中的目录路径查找失败。

如果您在目标的 Build Phases (运行阶段)中运行脚本,则这样的相对目录路径将起作用:

INFO="MyApp/Info.plist"

但是在前置操作中,它会静默失败。 相反,您必须使用这样的绝对目录路径:

INFO="${PROJECT_DIR}/MyApp/Info.plist"