auto make / build (GNU otomatik değil)


1

Dosya değişikliklerini izlemek ve GNU make'i çağırmak için herhangi bir yardımcı program var mı?

Veya, daha genel olarak, bazı dosyalar değiştiğinde periyodik olarak bir komut çağırmak? veya Makefile kontrol aralığı içeriyor mu?


2
Bu muhtemelen Yığın Taşması üzerinde daha iyi olurdu
user1596

Çünkü değişiklikler için açıkça kontrol etmeye gerek olmadığını unutmayın yapmak bunu yapmaz
dmckee

Yanıtlar:


1

bazı dosyalar değiştirildiğinde periyodik olarak bir komut çağırın

Bunu incron ile yapabilirsiniz . Döngüleri önlemek için, kaynak ağacın dışına inşa edin, değiştirilen dosyanın kaynak kontrolü altında olup olmadığını kontrol edin veya IN_NO_LOOP seçeneğini kullanın.


1

Hangi platform? Örneğin, her 60 saniyede bir yapmak için Bourne kabuğundaki veya bash'taki aşağıdaki satırı çağırabilirsiniz. Makefile'niz doğru tasarlandıysa, hiçbir dosya değişmediyse hiçbir şeyi değiştirmeden çıkacaktır:

doğru olsa da; yapmak; 60 uyku; tamam

Kodu işaretlendiği şekilde derlemeye çalışıyorsanız, Paul Duvall, Addison Wesley'in "Sürekli Entegrasyon" bölümüne bir göz atın. Bunun için araç ve teknikleri özetlemektedir.


Teşekkürler, Java projeleri için bir Hudson CI'm var, ancak istediğim bu değil. Eh, uyku döngüsü gayet iyi ve düzenli aralıklarla değişiklik olup olmadığını kontrol etmek için verdiğinize benzer bazı bash scriptleri yazdım, ancak işlevi sınırlı ve çok iyi ölçeklenmiyor. Öyleyse, belki de birileri işleri derinlemesine yapmış olabilir, ya da çalışma sonucumu .deb olarak mı yayınlamalıyım?
Xiè Jìléi

1

Evet, bunu yapmanın yolları var, ancak platformunuzu belirtmediniz.

Marka ve kaynak söz konusuysa, bir Sürüm Kontrol Sistemi dahil edilmeli ve modern VCS, belirli VCS faaliyetlerine dayanarak bir yapıyı tetikleyebilecek "taahhüt kancalarına" sahip olmalıdır.

Sadece “kaynak değişti” temelli bir yapıyı rastgele denemek işe yaramaz yapılar oluşturmak için çok kolay bir yoldur.

yoruma göre eklendi :

Bir IDE ortamından geldiğinizi ve yanınıza bazı kötü alışkanlıklar getirdiğinizi tahmin ediyorum. Düşünmek, biraz kodlamak ve nadiren derlemek için çok zaman harcamanız gerekir. Aksi halde yapmak, sizin ve bir sonraki adam için mutsuz olacak özensiz bir kod oluşturur.

Ayrıca, kendi yerel değişiklikleriniz için Git veya Mercurial'ı kullanmaktan ve merkezi depoya layık bir şeyiniz olduğunda, kendi kötü değişikliklerden korunurken sizi Subversion'a itmekten alıkoyacak hiçbir şey yoktur.

Ancak, derleyicinizi hata denetleyicisi olarak kullanmamanızı şiddetle tavsiye ederim. Eğer yaparsan daha kötü bir programcı olacaksın.


Ubuntu 9 ve Bash kabuğu kullanıyorum. Benim istediğim şey, yaz ve gör özelliği ya da sözdizimi hatasını ve hızlı önizlemeyi kontrol et. Esas olarak üzerinde çalıştığım kaynak küçük bir kod parçası ve projede çok fazla dosya kalmayacak. Yükleme kancaları çalışmıyor çünkü SVN sunucusu uzaktan kumandada ve sonucu kendi bilgisayarımda kontrol etmem gerekiyor. Ve bu sadece sorunu auto make' into otomatik taahhütten değiştirdi .
Xiè Jìléi,

Tavsiyeniz için teşekkürler, msw. Sana çok katılıyorum bu kod çok az düşünüyorum. Ancak, dünyada yaşayan pek çok tür şey var, çoğu proje think-more' mode, but there's also some projects that should be programmed in daha fazla inşa döngüsü deney modunda programlanmalıdır. Ve örneğin, bir kez daha think-more' projects have several stage, at the starting stage, it might be in düşünün bile “aşaması ve sonra bir debug-more' stage, or sth else. So, while daha fazla düşünün” olur, her zaman iyidir, beynimi güçlendirir ve hayatımı genişletir, ancak bazı işler için WYSIWIG daha uygundur. Öyle değil mi?
Xiè Jìléi,

0

Bunu belirli bir aralıkta yapmak için bir tür cron görevi ayarlayabilirsiniz.

Veya, dosyaların değiştirilip değiştirilmediğini kontrol etmek için bir yoklama döngüsü kullanan bir kabuk betiği yazın. Sonra ya uyku ya da koş koş. Bunu bir daemon olarak veya oturumunuzun arka planında çalıştırırsınız.

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.