答案 0 :(得分:45)
在构建之前进行预执行,因此输出不会转到构建日志,而是转到stdErr。您可以将输出复制到文件:
exec > ${PROJECT_DIR}/prebuild.log 2>&1
echo "hello world"
要使环境变量起作用,您还需要将“提供构建设置”设置为适当的目标。
这应该将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
命令我们有用的地方,以便您知道它实际上是在构建之前发出的。