bounty将在5天后过期。回答此问题可获得+100声望奖励。Fattie希望奖励现有答案。
点击构建,构建日志中没有打印任何内容。为什么?xcode 版本8.2.1(8C1002)
mcvgt66p1#
预操作发生在构建之前,因此输出不会进入构建日志,而是进入stdErr。您可以将输出复制到一个文件:
exec > ${PROJECT_DIR}/prebuild.log 2>&1 echo "hello world"
要使环境变量起作用,还需要将“Provide build settings from”设置为适当的目标。
这应该会将hello world写入项目文件夹中名为“prebuild.log”的文件。如果您希望这些活动在构建日志中结束,请考虑在目标的构建阶段添加一个运行脚本。
hello world
njthzxwz2#
为了补充答案https://stackoverflow.com/a/42497746/1058199,重要的是尽可能地不要将project. pbxproj(构建脚本所在的位置)或scheme文件(这些脚本所在的位置)弄得乱七八糟。考虑到这一点,我在项目根目录下创建了一个Build-Scripts文件夹,在其中放置应用构建脚本和预操作脚本。该文件夹被拖到项目根目录下 * 作为文件夹 *,以便我添加到其中的任何脚本都会自动添加到项目中。假设您的预操作脚本名为That_pre-action_script.sh,这是我根据批准的答案在预操作脚本中输入的内容。
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命令有用的地方,这样你就可以知道它实际上是在构建之前发出的。最好在脚本路径两边加上引号,以防项目路径中有空格字符(或其他字符)。
prebuild.log
chmod u+x
say
2条答案
按热度按时间mcvgt66p1#
预操作发生在构建之前,因此输出不会进入构建日志,而是进入stdErr。您可以将输出复制到一个文件:
要使环境变量起作用,还需要将“Provide build settings from”设置为适当的目标。
这应该会将
hello world
写入项目文件夹中名为“prebuild.log”的文件。如果您希望这些活动在构建日志中结束,请考虑在目标的构建阶段添加一个运行脚本。
njthzxwz2#
为了补充答案https://stackoverflow.com/a/42497746/1058199,重要的是尽可能地不要将project. pbxproj(构建脚本所在的位置)或scheme文件(这些脚本所在的位置)弄得乱七八糟。
考虑到这一点,我在项目根目录下创建了一个Build-Scripts文件夹,在其中放置应用构建脚本和预操作脚本。该文件夹被拖到项目根目录下 * 作为文件夹 *,以便我添加到其中的任何脚本都会自动添加到项目中。
假设您的预操作脚本名为
That_pre-action_script.sh
,这是我根据批准的答案在预操作脚本中输入的内容。作为测试,确保从脚本中回显一些消息,以便可以在
prebuild.log
文件中看到它。希望这个有用。
并且不要忘记在终端中
chmod u+x
您的脚本,以便它可以运行。重要的是如果你不能确定你的构建脚本是否正在运行,这就是
say
命令有用的地方,这样你就可以知道它实际上是在构建之前发出的。最好在脚本路径两边加上引号,以防项目路径中有空格字符(或其他字符)。