2009-04-20 16 views
5

(Şu anda) küçük bir C projesinde birim sınama desteği oluşturmak amacıyla Using Check with the Autotools sayfasındaki yönergeleri izliyorum. Her ne kadar Check yerine Cgreen kullanıyorum.GNU'nun taşınabilir eşdeğeri% -style desen kurallarını oluştur

Adım 9 ile sorun yaşıyorum, bu da automake '%' - style pattern kurallarının bir GNU make uzantısı olması hakkında bir uyarı vermesine neden oluyor.

belirli marka kural şudur: uzantılarını yapmak gnu dayanmaz bu kuralı belirtme eşdeğer bir yol olup olmadığını merak ediyorum

check_%.$(OBJEXT) : $(srcdir)/%.c 
    $(COMPILE) -DCHECKING -c -o [email protected] $^ 

.

cevap

7

Taşınabilir yapım kuralları yalnızca farklı son ekler kullanabilir, önekler aynı olmalıdır. Bununla birlikte, sonek mutlaka bir nokta ile başlamamaktadır. (. Bu durumda o tahmin edemez, çünkü ekleri ne Automake anlatmak zorunda) Yani bir şey olabilir mesela yeniden adlandırmak eğer aşağıdaki gibi check_showdns.oshowdns_check.o için:

SUFFIXES = _check.o 
check_libapdns_LDADD  = @[email protected] showdns_check.o 
.c_check.o: 
     $(COMPILE) -DCHECKING -c -o [email protected] $< 
+0

Harika öneri. Sorunu giderir. _check yerine _test öneki kullanarak bitti. – Wes

-2

Doğrusu devre dışı bırakmak için çalışacaktı Uyarı ya da sadece görmezden gel. GNU, tüm ilgili Unix benzeri platformlar için var; makefile taşınabilirliğini korumak için zaman harcamak için pratik bir neden yoktur. GNU make, diğer çoğu lehçe lehçeleri için de üstün özellik taşır.

+0

Bu doğrudur, ancak ana bilgisayar işletim sistemi bir kutudan çıktığında ek bir araç yüklemesi gerektirmez. – Wes

+0

Ancak, taşınabilir bir makefile sahip olmak için harcayacağınız zamanı düşünün. Yalnızca GNU yapımını hedeflerseniz, makaillerinizi yazmanız * çok daha kolay hale gelir ve uygulamanızı iyileştirmek ve hataları düzeltmek için daha fazla zamanınız olacaktır. – JesperE

+1

Güzel bir hikaye, eğer sadece GNU Make'i hedefliyorsanız, tüm Makefiles GNUMakefile'lerinizi adlandırıyor musunuz? Herkesin 'make' yapmasını gerektiren GNU Make ve GNUMakefile kullanarak standart make ile uyumluluk kırma isteğinizi belirtmeyen standart uygulama artık “zamanınızı boşa harcamayın” mantığıyla artık standart bir uygulamadır. – MkV