Xcode 4“清理”与“清理构建文件夹”


83

您在每个应用程序的开发中都遇到了某个特定的问题,即您在模拟器中看到的内容与您认为应该发生的情况不符。这些通常是人为错误-或至少在我的大多数情况下是;-)-但有时Xcode只是“迷路了”,似乎如此。我了解到Clean(Shift + Cmd + K)和Clean Build Folder…(Option + Shift + Command + K)菜单选项可以显示您的错误或Xcode之间的差异。

我的问题是:

Clean命令执行或不执行什么操作,从而Clean Build Folder…导致存在的原因?什么时候应该选一个,为什么不总是清理整个文件夹?


您可能会在这个可能重复的问题中找到一些答案。
Michael Dautermann

1
那里可能有一些隐藏的线索,但这完全不是重复的问题。我的是关于clean和clean build文件夹之间的区别,这是两个非常相似的命令。但是感谢大家的注意。
传道人

Answers:


92

Clean…清除当前所选目标的文件夹。
Clean Build Folder…清理所有目标的文件夹。


5
这与“所有目标文件夹”中的撇号不明确。您是说“所有目标的文件夹还是与所选目标相关的其他文件夹?”
Michael Forrest13

这个答案不完整。Clean Build Folder解决只有一个目标的项目中的问题。
罗勒·布尔克

94

如果Clean从“产品”菜单中选择,则XCode将删除Build文件夹中每个文件夹内的文件,如果选择Clean Build Folder它,则将删除整个Build文件夹。

之后Clean的命令:

在此处输入图片说明 之后Clean Build Folder的命令:

在此处输入图片说明

我认为您应该选择Clean Build Folder何时要构建要发布到AppStore的二进制文件,何时弄乱项目或应用程序由于“未知”原因而无法运行,否则请使用Clean

希望我已经回答了您的问题:D


5
抱歉,对此表示怀疑,但这似乎很奇怪。您是说两者之间的唯一区别是,一个删除文件夹,另一个保留文件夹,但删除所有内容吗?拥有四个空文件夹有什么区别?然而,清理和有时必须清理构建文件夹之间存在明显的区别……
jowie 2013年

3
是的,那是唯一的区别。就个人而言,我在为iOS模拟器构建应用程序之前使用“清理”,或者当我想将应用程序发布到App Store或确定要对代码和/或XCode进行奇怪的问题以及“清理构建文件夹”时使用我的应用是从头开始构建的,没有缓存。

4
是我自己,还是“ Clean Build Folder”比“ Clean”快?
Nicolas Miari

Xcode 8发生了一些变化,Build文件夹保留在之后Clean Build Folder...。显然,Clean Build Folder...它比更加完整Clean。但是,我认为~/Library/Developer/Xcode/DerivedData/xxx-ABCD在某些情况下需要删除文件夹,例如Xcode无法正常工作,其中xxx是项目或工作区的名称。
DawnSong

当人们回到古老的问题和答案时,总是爱不释手,并给出一个非常清晰的例子和解释
Cacoon

5

从Xcode 10开始,“清理”实际上已经消失了。苹果在这里说

“新的构建系统使用“清理构建文件夹”行为。不支持传统的“清理”行为”。


4

如果选择“清除”,则Xcode将删除Build文件夹中当前目标的每个文件夹(例如Products,Intermediates)内的文件。其他目标的文件仍然保留。

如果选择“清理构建文件夹”,Xcode将删除整个构建文件夹,因此一无所有。

在大多数情况下,“清理”将出于“未知”原因而起作用,但是您仍然必须“清理生成文件夹”,因为Xcode不会删除Products文件夹内include文件夹中的文件。


0

在某些文件~/Library/Developer/Xcode/DerivedData/xxx-ABCD,其中xxx为您的项目或工作区的名称,被后您删除CleanClean Build Folder...。显然,Clean Build Folder...删除的文件将比删除的文件更多Clean。但是,我认为在某些情况下需要删除前面提到的文件夹,例如您的Xcode无法正常工作。

顺便说一句,Xcode 8发生了一些变化,Build文件夹在之后保持不变Clean Build Folder...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.