Son zamanlarda, make-based oluşturma işlemimizdeki bağımlılıklar için .d dosyalarını işleme biçimimiz hakkında bir tartışma başlatıyoruz. Sorun, bazen dosyalar oluşturulduğunda .d dosyalarının bozulabileceği konusunda ortaya çıkarıldı.Hata durumunda ek dosyaları silme işlemini gerçekleştirme
Bir derleme kesildiğinde veya hata verirse, oluşturma işleminde olduğu nesne dosyalarının silinmesini sağlamak için .DELETE_ON_ERROR hedefini kullanıyoruz. Ancak, derleme zamanında da silinmesi gereken .d dosyalarını oluşturmak için GCC kullanıyoruz. Bunu anlatabilmek için basit bir yol var gibi görünmüyor.
Soru şu ki, bir hata durumunda hem nesneyi hem de bağımlılık dosyalarımızı silmek için koaksiyel yapmamızın bir yolu var mı? Kuralları kurmamızın bir yolu var mı? Böylece hem .d hem de .o dosyalarının aynı anda üretildiğini ve bir hata varsa silinmesi gerektiğini biliyor mu?
Alternatif olarak, bozuk .d dosyaları sorununu çözmek için yapabileceğimiz başka bir şey var mı? Bu satırlar boyunca bir öneri, .d dosyalarını geçici bir adla üretmek ve dosya başına doğru adla kopyalayan ayrı bir derleme sonrası adımına sahip olmaktır.
".DELETE_ON_ERROR:" makefile'nin en üstündeki tüm geçici dosyalarımızdan kurtulmama izin verin. Teşekkürler! –
"% .o:% .c" desen kuralının tarifi için mv'yi ikinci satır olarak ayarlamanızı öneririm.Davranışta bir değişiklik görmüyorum ya da '&&' harfini ilk satıra koymak için kullanmanın yararı yok. –
@RichardPerrin Eğer gmake '-i' (hataları göz ardı et) seçeneği ile çağrılırsa, teklifiniz yanlış davranış üretecektir. Bu durumda, sürümünüz 'mv' komutunu çalıştırır, orijinalim yüklenmezken' gcc'de bir hata olup olmadığına bakar. –