【问题标题】:Xcode scheme pre-action script not runningXcode 方案预操作脚本未运行
【发布时间】:2017-02-27 09:48:47
【问题描述】:

点击构建,构建日志中没有打印任何内容。什么给了?

Xcode 版本 8.2.1 (8C1002)

【问题讨论】:

标签: xcode bash


【解决方案1】:

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

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

要使环境变量正常工作,您还需要将“提供构建设置来自”设置为适当的目标。

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

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

【讨论】:

  • 感谢@foundry。但它没有奏效,我害怕。没有创建文件。
  • 我实际上是在创建一个新项目。因此,启动 Xcode > 选择 iOS 框架 > 命名 > 保存 > 编辑方案 > 展开“构建”> 选择“预操作”> 添加此脚本。 > 点击 CMD + B。
  • 谢谢@foundy。出于兴趣: 2>&1 是什么?
  • @robdashnash - man bash,查看名为“重定向”的部分。 ...“将标准输出和标准错误都指向文件 [filename]”
  • 检查 ${PROJECT_DIR} 指向的位置,例如我(错误地)查看了我的工作区文件夹(根目录),但它指的是您拥有 xcodeproj 的文件夹(如果像我一样,您有两个不同的文件夹)。
【解决方案2】:

要补充答案,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 命令有用的地方,以便您知道它实际上是在构建之前发出的。

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

【讨论】:

  • +1 为您提供有关报价的注释!这是我系统上的全部问题。你会认为我们此时会有空间感知软件......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-15
  • 2013-10-09
  • 2012-02-21
  • 2013-06-11
  • 2020-09-04
  • 2018-04-15
  • 2012-01-06
相关资源
最近更新 更多