Xcode Clean Build Folder mı, DerivedData’yı Silmek mi?
AskClean Ekibi · Güncellendi 2026-11-02
Clean Build Folder, açık olan şemanın (scheme) derleme ürünlerini temizler. DerivedData’yı silmek ise daha geniş bir kümeyi sıfırlar: derleme ürünlerinin yanı sıra indeksleri, modül önbelleklerini ve günlükleri. Bozuk bir derlemede Clean Build Folder ile başlayın; indeks bozulduysa yalnızca o projenin DerivedData klasörünü silin; gerçekten disk alanı kazanmak istiyorsanız artık derlemediğiniz projelerin DerivedData klasörlerini silin.
Fark derinlikte değil, kapsamda
Product > Clean Build Folder (Shift-Command-K), o an açık olan proje ve şema içinde çalışır. Bu bağlamdaki derlenmiş ürünleri ve ara dosyaları atar; böylece bir sonraki derleme kaynaktan başlar. Kapsamı tek bir projeyle sınırlıdır ve yeniden oluşturulması pahalı olan şeyleri bilerek korur.
DerivedData ise varsayılan konumu kullanan tüm projelerin paylaştığı üst düzey klasördür: ~/Library/Developer/Xcode/DerivedData. Şimdiye kadar açtığınız her proje veya çalışma alanı (workspace) için burada bir alt klasör bulunur. Bir alt klasörü silmek yalnızca o projeyi sıfırlar; klasörün tamamını silmek ise bütün projelerinizin bir sonraki açılışta yeniden derlenmesine ve yeniden indekslenmesine yol açar.
Bu yüzden ikisini “hafif temizlik” ve “derin temizlik” diye ayırmak doğru olmaz. Clean Build Folder dar kapsamlı ve ucuzdur; DerivedData’yı silmek geniş kapsamlıdır ve indeksi de kaybettirir. Hangisinin doğru seçim olduğu tamamen bozulan şeyin derleme ürünlerinin içinde mi, dışında mı olduğuna bağlıdır.
Derleme bozulduğunda dar kapsamla başlayın
Hata, dal (branch) değiştirdikten, bir derleme yapılandırmasını değiştirdikten veya resource dosyalarını düzenledikten hemen sonra ortaya çıktıysa çalışan uygulamayı kapatın ve önce Clean Build Folder’ı kullanın. Bu, elinizdeki en ucuz sıfırlamadır: indeksi korur ve sizi birkaç dakikalık indeksleme beklemeden, tek bir derlemeyle işinize döndürür.
Belirtiler aslında derleme ürünleriyle ilgili değilse bir adım ileri gidip o projenin DerivedData klasörünü silin: Xcode’un zaten düzelttiğiniz kod için hata göstermesi, tanıma gitme (jump-to-definition) komutunun yanlış yere götürmesi ya da kod tamamlamanın kendi türlerinizi artık tanımaması gibi. Bunlar indeks belirtileridir ve Clean Build Folder indekse dokunmaz.
Bilmeye değer özel bir durum var; “temizledim, düzelmedi” diyen birinin sonunda “DerivedData’yı sildim, düzeldi” demesinin olağan nedeni budur: önceden derlenmiş modül önbelleği (ModuleCache.noindex) herhangi bir projenin alt klasöründe değil, DerivedData’nın kökünde durur. Clean Build Folder ona hiçbir zaman ulaşmaz. Bir SDK veya araç zinciri (toolchain) değişikliğinden sonra modül önbelleği eskidiğinde hatayı yalnızca onu silmek giderir.
İki komut da kaynak kodunuzdaki veya bağımlılıklarınızdaki gerçek bir hatayı düzeltmez. Aynı hata temiz bir derlemeden sonra da sürüyorsa temizlemeyi bırakın ve derleyici mesajını okuyun: neden proje ayarlarında, Package.resolved dosyasında, seçili SDK’da ya da kodun kendisindedir.
İkisi de disk temizliği yöntemi değil
Clean Build Folder, yan etki olarak biraz yer de açan bir tanılama aracıdır. Geçerli projede bir miktar alan geri kazandırabilir, ama diğer tüm projelerin derleme ürünleri, bütün indeksler ve modül önbelleği oldukları yerde kalır. Disk alanı kazanmak için onu çalıştırmak yanlış araca başvurmak demektir.
Asıl amacınız yer açmaksa tersinden gidin: önce DerivedData alt klasörlerini ölçün, ardından aylardır açmadığınız projelere ait DerivedData alt klasörlerini silin. Onlarca gigabayt genellikle buradadır: bir kez derleyip bir daha dönmediğiniz tek seferlik klonlar.
rm -rf ile başlamayın. Finder’da seçtiğiniz klasörleri Çöp Sepeti’ne taşıyabilirsiniz; Çöp Sepeti’ni boşaltana kadar geri alınabilirler. Bu fark, o anda derlenmekte olan bir projenin klasörünü ilk kez yanlışlıkla sildiğinizde önem kazanır. Terminal otomasyon için değerlidir; ama onu da ancak tam yolu doğruladıktan sonra kullanın.
Hazır bir rakama değil, kendi ölçümünüze güvenin
Hiçbir şey yapmadan önce DerivedData’nın boyutunu not edin, iki seçenekten yalnızca birini uygulayın ve yeniden ölçün. Clean Build Folder’dan sonra geçerli şemayı derleyin. Bir DerivedData klasörünü sildikten sonra Xcode’u açın; ilk derlemenin ve indeksleme turunun bitmesini bekleyin.
Bu sırayla ilerlemek, kazandığınız alanı bunun için ödediğiniz bedelden ayırmanızı sağlar. Beklenecek evrensel bir rakam yoktur: sonuç, o Mac’te kaç proje, yapılandırma ve mimari için derleme yapıldığına bağlıdır.
Hangi durumda hangisi
| Durum | Ne yapılmalı | Yeniden oluşturma bedeli |
|---|---|---|
| Geçerli şemada derleme başarısız oluyor | Product > Clean Build Folder | Bu projenin bir kez yeniden derlenmesi. Tüm projelerin indeksleri korunur. |
| Eskimiş hatalar, bozuk tanıma gitme (jump-to-definition) | ~/Library/Developer/Xcode/DerivedData/<proje> | Yalnızca o proje için tam yeniden derleme ve yeniden indeksleme. |
| SDK değişikliğinden sonra hatalar Clean Build Folder’a rağmen sürüyor | ~/Library/Developer/Xcode/DerivedData/ModuleCache.noindex | Modüller bir sonraki derlemede yeniden derlenir. Clean Build Folder buraya ulaşamaz. |
| Gerçekten disk alanına ihtiyacınız var | ~/Library/Developer/Xcode/DerivedData | Büyük ve eski alt klasörleri silin; o projeler bir sonraki açılışta yeniden derlenir. |
| Eski simülatör çalışma zamanları | Xcode Settings > Components | Tamamen ayrı bir kategoridir; iki komut da ona dokunmaz. |
Bu tablo kapsamı anlatır, belirli bir gigabayt miktarı vaat etmez. Kendi Mac’inizi işlemden önce ve sonra ölçün.
SSS
Clean Build Folder DerivedData’yı siler mi?
Hayır. Yalnızca açık olan proje ve şemanın derleme ürünlerini temizler. Tüm projelerin indekslerini, modül önbelleğini ve günlüklerini de barındıran ortak DerivedData klasörünü silmekle aynı şey değildir.
Tek bir projenin DerivedData klasörünü silmek güvenli mi?
Evet. İçindeki her şey kaynak kodunuzdan türetilir ve Xcode bunları yeniden oluşturur. Kodunuza ve git geçmişinize dokunulmaz. Tek bedeli, sonraki ilk derlemenin tam derleme olması ve ardından bir indeksleme turunun gelmesidir.
Önce Xcode’dan çıkmam gerekir mi?
DerivedData’yı elle silecekseniz evet; böylece siz dosyaları kaldırırken indeksleyici onları açık tutmaz veya yeniden oluşturmaz. Yerleşik Clean Build Folder komutu için gerekmez; bu işlemi Xcode kendisi yapar.
Temizlikten sonra hata neden hâlâ duruyor?
Büyük olasılıkla neden hiçbir zaman önbellek değildi. Derleyici mesajını, şema ayarlarını, bağımlılık sürümlerini, Package.resolved dosyasını, seçili SDK’yı ve geçerli dalınızda gerçekte neyin değiştiğini kontrol edin.
Clean Build Folder işe yaramadı ama DerivedData’yı silmek sorunu çözdü. Neden?
Genellikle nedeni önceden derlenmiş modül önbelleğidir. ModuleCache.noindex bir proje alt klasöründe değil, DerivedData’nın kökünde durur; Clean Build Folder ona ulaşamaz, DerivedData’yı silmek ise ulaşır.
Kaynaklar