2012-01-23 53 views
1

在典型的迴歸中,有一個「基本」類別和一個測試用例「abc.c」。要運行類測試「ABC」,「基本」,用戶在向鍵:Makefile中的目標替換

make basic_abc 

然後命令應該是:

basic_abc: abc.c 
     gcc -g -o abc abc.c 

我如何寫一個規則,這將CHOP我的$ @中的「basic_」。這樣我就可以對所有測試使用該規則。 在僞語言,我怎麼能得到與模式替換上述規則

basic_abc: $(patsubst .*_, " ", [email protected]).c 
     gcc -g -o $(patsubst .*_, " ", [email protected]) $(patsubst .*_, " ", [email protected]).c 

回答

1

你的意思是這樣的嗎?

.PHONY: basic_% 
basic_%: %.c 
     gcc -g -o $* $< 

雖然已經知道如何編譯.c文件。從你的問題來看,basic_x依賴編譯的x似乎更有意義,並且在配方中的一堆測試用例上運行它,但也許我誤解了你的設置。

+0

我認爲這有效。我會試試看。但爲什麼我們需要.PHONY? – Mike

+0

.PHONY目標指定不存在具有此名稱的構建制品(目標文件);它只是一個「人類」目標,每次請求製作時應重複其操作(即使具有該名稱的文件存在並且比其依賴關係更新,至少在理論上)。 – tripleee