Sadece 'yapmak' yerine 'temiz' yapmak için genel bir kural var mı?


11

Şu anda çok dosyalı bir program yazıyorum ve görünüşe göre sadece 'make' (bazı durumlarda sezgisel olarak yapılması gerektiğini düşünürdüm) bazı nedenlerden dolayı programımın başarısız olmasına neden oluyor. Sanırım sorunun daha fazla detayını verebilirim, ama önemli olan şey 'temiz yap' kullanılırken çalışmasıdır. Bu yüzden, sadece 'yapmak' yerine 'temizle' çalıştırmak için genel kuralın kim olduğunu bilip bilmediğini merak ediyordum

Yanıtlar:


17

Kaynak kodunu paketlemek istediğinizde (ve bu nedenle yerleşik nesnelere ihtiyaç duymadığınız / istemediğinizde) VEYA yerleşik nesnelerin kötü olduğuna inanmak için bir nedeniniz olduğunda iki durumda temizlemeyi çalıştırırsınız.

Sizin durumunuzda, büyük olasılıkla bir arabası Makefile sonucu ortaya çıkan bir sorunu çözmek için 'temiz olun' kullanıyorsunuz. İçerideki bir şey ne zaman olması gerektiğinde yeniden derlenmiyor ve bu da çıkış ikili dosyasının kötü olmasına neden oluyor.

Projenizin karmaşıklığına ve nasıl kullandığınıza bağlı olarak olabilecek birçok neden olabilir, ancak bunun özü şudur: Makefile'nizi hata ayıklamak için biraz zaman harcamanız gerekir.


6
Yükseltilmiş derleyici, kütüphanelerin yeni sürümleri vb. Gibi "yapı ortamında bazı değişiklikler" unutun, bu durumlarda tüm modüllerin aynı şarkı sayfasından şarkı söylediğinden emin olmak için her zaman "temizlemek" için iyi bir fikir!
James Anderson

2
@JamesAnderson Bunların sadece hatalı Makefiles örnekleri olduğunu iddia edebiliriz.
Kristof Provost

4
@KristofProvost: "Yeni ABI" (muhtemelen yeni bir derleyici sürümü eklenerek) 'buggy Makefile' olarak sınıflandıracağımdan emin değilim. 'Yapmamızı' beklediğim şeyin kapsamı dışında.
Vatine

1
Doğru, ancak derleyiciyi makefiles'a önkoşul olarak eklemek mümkündür (ve o kadar da zor değil). Bu sorunu yakalamak için yeterli. Sonuçta bu büyük bir sorun değil ve yine de çok nadir. Bu noktaya değindim çünkü derleyici bayrakları ve benzerlerini dikkate alan makefiles kullandım (ve yazdım). Bu da makyaj dosyalarında oldukça nadirdir, ancak çok yararlıdır (derleyiciyi kontrol etmekten daha fazlası;)). İyi, iyi yazılmış markalardan beklentilerim oldukça yüksek. Ortalama makefile beklentilerim daha düşük ...
Kristof Provost

8

Genel olarak Michael Kohne'un cevabına katılıyorum. Ben "temiz yapmak" aslında ne yaptığını bilmek için kurulum belgelerini okumak gerekir eklemek istiyorum. Kullanmanız gerekebilecek "temiz" yapmak ve "belirsiz yapmak" gibi farklı düzeylerde temizler olabilir. Bunlar için gayri resmi sözleşmeler var, ancak taşa oyulmuş hiçbir şey yok.


2
+1: "" temiz kılmak "ın gerçekte ne yaptığını bilmek için kurulum belgelerini okumanız gerekir. "Genel kural" yoktur. Belgeleri gerçekten okumalısınız.
S.Lott

5

Bunun sizin projeniz olduğunu anlıyorum, bu yüzden sizin makefile. Amacım, bir tane üretmek mümkünse make her zaman doğru bir yapı oluşturmaktır. Eğer make cleanbazı durumundan kurtarmak için gerekli olan o bence makefileyanlıştır ve düzeltilmelidir. Bağımlılıklarınız doğru bir şekilde hesaplandıysa, bir basit makeyeniden derlenmesi gereken her şeyi yeniden derlemelidir.


2
Katılıyorum. Artık neredeyse sonsuz disk alanı bu günlerde bir sorun değil, ama temiz ve realclean yapmak esas olarak bağlantılı çalıştırılabilir oluşturulduktan sonra disk alanı kazanmak için kullanıldığını hatırlamak için yeterince yaşlı değilim. GCC yapmak, apache, perl, vb etrafında döşeme bir sürü şey yaptı.
Bill Ruppert

1

Ben bir gece inşa etmeden önce "temiz olun" çalışacaktı. Bu durumda, tam bir yapı yapmak için gereken ek süre muhtemelen çok önemli değildir, ancak her şeyin doğru sürümde olduğundan emin olmanızdan elde edeceğiniz ek güvenlik muhtemelen buna değer.


Bu, projenizin boyutuna bağlı olacaktır. Artımlı bir yapıda çalışmak için kullandığım yerde, gece boyunca çekilen diğer sitelerden değişikliklerle 2-4 saat sürecekti. Temiz bir yapı 7 ila 9 saat sürebilir. Bunun üzerine bazen inşa etmek istediğimiz 2 veya 3 şubemiz vardı. Hızlı makinelerde bile, çok büyük kod tabanlarının küçük olanlardan oldukça farklı işlem görmesi gerekir.
Taft
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.