XCode方案预运行脚本未运行

22 bash xcode

点击构建,在构建日志中不打印任何内容.是什么赋予了?

XCode版本8.2.1(8C1002)

在此输入图像描述

fou*_*dry 53

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

exec > ${PROJECT_DIR}/prebuild.log 2>&1
echo "hello world"
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

这应该写入hello world项目文件夹中名为"prebuild.log"的文件.

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

  • 感谢您的@foundry。恐怕它没有用。未创建文件。 (4认同)
  • 谢谢@foundy。出于兴趣:什么是 2>&1 ? (2认同)
  • @robdashnash - `man bash`,查看名为“重定向”的部分。...“将标准输出和标准错误都指向文件 [`filename`]” (2认同)

Ale*_*one 9

要添加到答案,/sf/answers/2974842251/,重要的是不要尽可能地将 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"
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助。

并且不要忘记chmod u+x在终端中使用您的脚本,以便它可以运行。

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

最好在脚本路径周围加上引号,以防项目路径中有任何空格字符(或其他字符)。

  • 关于报价的注释+1!这就是我系统上的全部问题。你可能认为我们现在已经有了空间感知软件...... (2认同)