xcode4:可靠地检测项目/工作区的DerivedData目录

Xcode 4将所有内容都构build到$HOME/Library/Developer/Xcode/DerivedData/$PROJECT-$UUID ,其中$UUID是一个看似随机的string(它不是随机的,它看起来是随机的)。

我如何可靠地检测到上面的$PROJECT-$UUID部分? 我已经看到了一个脚本( https://gist.github.com/949831 ),它假设它是DerivedData中最后一个修改的目录 – 但是如果我的CI机器正在并行构build一些项目,则不是这样。

没有人回答,所以我一直在寻找的想法,直到我find了下面的,这符合我的需要。 它可以进一步修改更安全。

  1. 在Xcode中,将运行脚本构build阶段添加到目标(主要目标,如果为同一项目构build一些)。
  2. 在脚本中,把这一行:

ln -sf "$BUILD_DIR" BuildDir

现在,在构build目标时,将在项目目录中创build项目的DerivedData目录的符号链接。 如果可取的话,你也可以创buildBuildDir作为内容是$ BUILD_DIR的文件:

echo "$BUILD_DIR" > BuildDir

然后在脚本中使用$(cat BuildDir)来检索它。