iPhone应用程序构建第一次失败,第二次成功;“清洁所有目标”;

iPhone应用程序构建第一次失败,第二次成功;“清洁所有目标”;,iphone,xcode,Iphone,Xcode,我是一个新iPhone应用程序的构建工程师,我遇到了以下非常奇怪的情况。我们在SnowLeopard下使用git和Xcode 3.2.4 无论我是在使用Xcode GUI还是在命令行上使用Xcode构建,都会发生这种情况 我克隆了存储库的一个干净副本并运行“Build”或“Build and Archive” 构建失败,出现一系列编译错误 我运行“清除所有目标”,并选中“还清除依赖项”和“还删除预编译头” 我再次运行“构建”或“构建并归档” 构建成功 这些错误看起来都是“file somet

我是一个新iPhone应用程序的构建工程师,我遇到了以下非常奇怪的情况。我们在SnowLeopard下使用git和Xcode 3.2.4

无论我是在使用Xcode GUI还是在命令行上使用Xcode构建,都会发生这种情况

  • 我克隆了存储库的一个干净副本并运行“Build”或“Build and Archive”
  • 构建失败,出现一系列编译错误
  • 我运行“清除所有目标”,并选中“还清除依赖项”和“还删除预编译头”
  • 我再次运行“构建”或“构建并归档”
  • 构建成功
这些错误看起来都是“file something.h没有这样的文件或目录”的形式,但它声称找不到的文件实际上就在那里


有人知道这里发生了什么吗?git repo使用子模块,据我所知,所有“缺失”文件都包含在其中一个子模块中。但是,正如我所指出的,文件存在于工作目录中,并且子模块已正确初始化和更新。

结果表明,如果在运行生成之前(在新克隆之后)手动创建所有生成目录及其子目录,则生成成功。由于子模块的原因,实际上有三个构建/目录(一个在主项目中,每个子模块中一个),子模块有一堆子目录

这一定是由于某个地方的错误,我将继续研究它,但至少目前我有一个解决方法,可以继续创建我的自动构建


编辑:事实上,这似乎是由于两个子模块之一的构建中存在缺陷所致。我猜它会在尝试使用一个或多个构建目录后创建它们。我将与三位20名开发人员讨论这个问题。

既然您说文件存在,那么问题似乎与构建过程有关,而不是与git有关。(但我不确定是否能把标签取下来!)是的,我也是,这就是我为什么把它放在那里的原因。如果有人提出了一个git默认答案,我会删除它。:-)完成全部清理后,构建目录中还剩下什么?补充Ryan的评论:您可以使用git来帮助查看失败的构建和清理后留下的内容
git status
查看未跟踪的文件,
git diff
如果有任何内容被修改,以及
git ls files-i
查看被忽略的文件。看起来这可能会有一些不同——可能是生成的构建配置文件导致第二次生成新的构建标志,以便正确找到头文件。