.xib 文件不在编译源构建阶段,但仍然可以正确构建;怎么会这样?
Posted
技术标签:
【中文标题】.xib 文件不在编译源构建阶段,但仍然可以正确构建;怎么会这样?【英文标题】:.xib file not in Compile Sources build phase, but still builds correctly; how can this be? 【发布时间】:2013-04-07 17:32:32 【问题描述】:当您从具有 .xib 文件的 Xcode 模板开始时,该 .xib 文件会列在“编译源代码”构建阶段。这对我来说很有意义,因为在构建过程中,需要将 .xib 文件转换为 .nib 文件(使用ibtool
),并且确实如此。
但在重命名我的 .xib 文件并添加一些新文件时,我的 .xib 文件没有列在编译源构建阶段。相反,它们都列在 Copy Files 构建阶段。我无法解决这个问题。 (不要让我开始那个。)
但事实证明我不必修复它!当我构建时,我可以查看构建应用程序的包,我看到它有 .nib 文件,而不是 .xib 文件。 .xib 文件没有被复制到资源文件夹中,即使它们处于 Copy Files 构建阶段;它们正在被编译,即使它们不在编译源构建阶段。
我可以通过查看构建日志来确认这一点:
CompileXIB "MyApp/en.lproj/ViewController~iphone.xib"
CompileXIB "MyApp/en.lproj/ViewController~ipad.xib"
这怎么可能?
编辑:现在我无法重现我最初的前提!正如一位受访者所说,模板没有将 .xib 文件置于 Compile Sources 构建阶段。然而,我确实最终遇到了一些 .xib 文件处于编译源构建阶段而一些处于复制构建阶段的情况,这让我感到困惑。
【问题讨论】:
【参考方案1】:当我使用“Cocoa Application”模板为 OS X 创建一个全新的 Xcode 项目时,该项目的唯一 .xib
文件未列在“编译源”下,它列在“复制捆绑资源”下。所以我不确定你的.xib
是如何/为什么首先被列在编译源下的。
至于它们是如何使用CompileXIB
命令自动编译的,我怀疑这是由于 Xcode 的 Build Rule 称为“Interface Builder XIB 编译器”,它适用于所有 Interface Builder 文件。
【讨论】:
以上是关于.xib 文件不在编译源构建阶段,但仍然可以正确构建;怎么会这样?的主要内容,如果未能解决你的问题,请参考以下文章