2009-04-20 43 views
5

我按照Using Check with the Autotools頁面上的說明嘗試構建(當前)小型C項目中的單元測試支持。雖然我使用Cgreen而不是CheckGNU make的便攜式等效模式規則

我在第9步遇到問題,導致automake發出警告,提示使用'%'樣式的模式規則是GNU make的擴展。

的特殊化妝的規則是:

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

我不知道是否有指定此規則不依賴於GNU對make的擴展的等效方式。

回答

7

便攜式make規則只能使用不同的後綴,前綴應該是相同的。

.c.o: 
     $(COMPILE) -DCHECKING -c -o [email protected] $< 

但是,後綴不一定以點開始。 (在這種情況下,你必須告訴Automake的你的後綴是什麼,因爲它不能猜測。)因此,例如,你可以有一些,如果你重新命名如下check_showdns.oshowdns_check.o

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

很棒的建議。解決問題。我結束了使用_test前綴而不是_check。 – Wes 2009-04-21 03:17:03

-2

我寧願嘗試禁用警告或者忽略它。 GNU make適用於所有相關的類Unix平臺;沒有實際的理由花時間維護makefile的可移植性。 GNU make在功能上也優於大多數其他make方言。

+0

這是真的,但是當主機操作系統提供一個開箱即用的功能時,不需要安裝額外的工具。 – Wes 2009-04-20 23:15:00