Xcode方案预运行脚本未运行

时间:2017-02-27 09:48:48

标签: xcode bash

点击构建,在构建日志中不会打印任何内容。是什么给了什么?

Xcode版本8.2.1(8C1002)

enter image description here

2 个答案:

答案 0 :(得分:45)

在构建之前进行预执行,因此输出不会转到构建日志,而是转到stdErr。您可以将输出复制到文件:

exec > ${PROJECT_DIR}/prebuild.log 2>&1
echo "hello world"

要使环境变量起作用,您还需要将“提供构建设置”设置为适当的目标。

enter image description here

这应该将hello world写入项目文件夹中名为“prebuild.log”的文件。

如果您希望这些活动最终在构建日志中,请考虑将运行脚本添加到目标的构建阶段。

答案 1 :(得分:1)

要添加答案https://stackoverflow.com/a/42497746/1058199,请尽可能不要弄乱project.pbxproj(构建脚本所在的位置)或您的方案文件(这些脚本所在的位置),这一点很重要。

考虑到这一点,我在项目根目录中创建了一个Build-Scripts文件夹,在其中放置了应用程序构建脚本和操作前脚本。该文件夹作为文件夹被拖到项目的根目录中,这样我添加到该脚本中的所有脚本都会自动添加到项目中。

假设您的行动前脚本称为That_pre-action_script.sh,这就是我根据批准的答案在行动前脚本中放的内容。

say "Pre build scripts running."
exec > ${PROJECT_DIR}/prebuild.log 2>&1
echo "Starting build scheme Pre-actions"
${PROJECT_DIR}/Build-Phases/That_pre-action_script.sh

作为测试,请确保从脚本中回显某些消息,以便可以在prebuild.log文件中看到它。

希望这会有所帮助。

也不要忘记对脚本进行chmod u + x以便运行。

重要的部分是您是否无法确定构建脚本是否正在运行。这是say命令我们有用的地方,以便您知道它实际上是在构建之前发出的。