Xcode方案预操作脚本未运行

2eafrhcq  于 2023-01-06  发布在  其他
关注(0)|答案(2)|浏览(141)

bounty将在5天后过期。回答此问题可获得+100声望奖励。Fattie希望奖励现有答案

点击构建,构建日志中没有打印任何内容。为什么?
xcode 版本8.2.1(8C1002)

mcvgt66p

mcvgt66p1#

预操作发生在构建之前,因此输出不会进入构建日志,而是进入stdErr。您可以将输出复制到一个文件:

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

要使环境变量起作用,还需要将“Provide build settings from”设置为适当的目标。

这应该会将hello world写入项目文件夹中名为“prebuild.log”的文件。
如果您希望这些活动在构建日志中结束,请考虑在目标的构建阶段添加一个运行脚本。

njthzxwz

njthzxwz2#

为了补充答案https://stackoverflow.com/a/42497746/1058199,重要的是尽可能地不要将project. pbxproj(构建脚本所在的位置)或scheme文件(这些脚本所在的位置)弄得乱七八糟。
考虑到这一点,我在项目根目录下创建了一个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命令有用的地方,这样你就可以知道它实际上是在构建之前发出的。
最好在脚本路径两边加上引号,以防项目路径中有空格字符(或其他字符)。

相关问题