Xcode 4 «Чистый» против «Чистой папки сборки»

83

В разработке каждого приложения наступает определенный момент, когда то, что вы видите в симуляторе, не соответствует тому, что, по вашему мнению, должно произойти. В основном это человеческие ошибки - или, по крайней мере, они есть в большинстве моих случаев ;-) - но иногда Xcode просто «заблудился», или так кажется. Я узнал, что параметры меню Clean(Shift + Cmd + K) и Clean Build Folder…(Option + Shift + Command + K) могут показать разницу между вашей ошибкой и Xcode.

Мой вопрос:

Что Cleanкоманда делает или не делает, что оставляет повод для Clean Build Folder…существования? Когда я должен выбирать одно вместо другого, почему бы просто не очистить всю папку?

эпологий
источник
Вы можете найти ответы на этот потенциально повторяющийся вопрос .
Michael Dautermann
1
Там могут быть какие-то скрытые подсказки, но это совершенно не повторяющийся вопрос. Моя - о различиях между чистой и чистой папкой сборки, двумя очень похожими командами. Но спасибо за внимание.
epologee

Ответы:

92

Clean…очищает папки для текущей выбранной цели.
Clean Build Folder…очищает папки для всех целей.

Оливер
источник
5
Это неоднозначно с апострофом во «всех целевых папках». Вы имеете в виду «папки для всех целей или есть какие-то другие папки, связанные с выбранной целью?»
Майкл Форрест
Этот ответ неполный. Clean Build Folderрешает проблемы в проектах с единственной целью.
Basil
94

Если вы выберете Cleanиз меню продукта, XCode удалит файлы внутри каждой папки в папке сборки, если вы выберете, Clean Build Folderон удалит всю папку сборки.

После Cleanкоманды:

введите описание изображения здесь После Clean Build Folderкоманды:

введите описание изображения здесь

Я думаю, вам следует выбрать, Clean Build Folderкогда вы хотите создать двоичный файл, который вы хотите выпустить в AppStore, когда вы испортили свой проект или когда ваше приложение не работает по «неизвестной» причине, в противном случае используйте Clean.

Надеюсь, я ответил на ваш вопрос: D

Алюминий
источник
5
Извините за скепсис, но это кажется странным. Вы хотите сказать, что единственная разница между ними в том, что одна удаляет папки, а другая сохраняет папки, но удаляет все содержимое? Какая разница в наличии четырех пустых папок? Тем не менее, есть заметная разница между очисткой и иногда необходимостью чистить папки сборки ...
Джоуи
3
Да, это единственная разница. Лично я использую «Clean» перед созданием приложения для симулятора iOS или когда у меня возникают странные проблемы с кодом и / или XCode и «Clean Build Folder», когда я хочу опубликовать приложение в App Store или когда я хочу быть уверенным. что мое приложение создается с нуля без кешей.
Aluminium
4
Это только у меня, или «Чистая папка сборки» быстрее, чем «Очистить»?
Николас Миари
Что-то изменилось для Xcode 8, Buildпосле этого сохраняется папка Clean Build Folder.... Очевидно, Clean Build Folder...полнее чем Clean. Однако я думаю, что удаление ~/Library/Developer/Xcode/DerivedData/xxx-ABCDпапки необходимо в некоторых случаях, например, если ваш Xcode не может работать должным образом, где xxx - это имя вашего проекта или рабочей области.
DawnSong
Всегда люблю, когда люди возвращаются к старому вопросу и отвечают, который является популярным, и приводят очень ясный пример и объяснение
Cacoon
5

Начиная с Xcode 10, «чистота» фактически исчезла. Apple говорит здесь :

«Новая система сборки использует поведение« чистая папка сборки ». Устаревшее« чистое »поведение не поддерживается».

user3806037
источник
4

Если вы выберете «Очистить», Xcode удалит файлы внутри каждой папки (например, «Продукты», «Промежуточные звенья») в папке «Сборка» для текущей цели. Файлы для других целей остаются.

Если вы выберете «Очистить папку сборки», Xcode удалит всю папку сборки , так что ничего не останется.

В большинстве случаев «Очистить» будет работать по «неизвестным» причинам, но вам все равно придется «Очистить папку сборки», потому что Xcode не удаляет файлы в подключаемой папке внутри папки « Продукты ».

Минди
источник
0

Некоторые файлы в ~/Library/Developer/Xcode/DerivedData/xxx-ABCD, где xxx - это имя вашего проекта или рабочего пространства, были удалены после того, как вы Cleanили Clean Build Folder.... Очевидно, Clean Build Folder...удалит больше файлов, чем удалит Clean. Однако я думаю, что удаление папки, о которой я упоминал ранее, необходимо в некоторых случаях, например, если ваш Xcode не может работать должным образом.

Кстати, для Xcode 8 что-то изменилось, Buildпапка послеClean Build Folder...

РассветПесня
источник