2016-04-14 103 views
0

我是新來的。我有一個非常基本的問題,並且徒勞無功地尋找它。我對不同的先決條件有不同的論點。向前提條件做參數

a b:c d 
     prog -i c -j d -out1 a -out2 b 

我知道那$ +會列出所有preq,但我該如何提供參數。我可以在配方中重新鍵入b c和d,並且根本不使用自動變量,但是輸入需要進行兩次。一個模式規則可以在a和b可以分別鏈接到c和d的情況下,但我仍然如何提供參數?

萬致謝

回答

0

讓我們首先嚐試一些簡單的規則:

a b c: 
    @echo the target is [email protected] 

(測試此與 「使」 或 「讓BC」)

a: c d 
    @echo the prerequisites are $^ 
    @echo the first prerequisite is $< 

a: c d 
    @echo the second prerequisite is $(word 2,$^) 

(原油,但有效)。

您的規則:

a b : c d 
    prog -i c -j d -out1 a -out2 b 

是有點奇怪,它可以調用任一目標(ab),它會做完全相同的事情。這是完全合法的,但儘管Make可以通過[email protected]訪問目標名稱,但它不能輕易掃描它試圖構建的目標名稱而非。但有一種方法可以減少多餘的分型:

TARG_1 := a 
TARG_2 := b 
TARGS := $(TARG_1) $(TARG_2) 

$(TARGS) : c d 
    prog -i $< -j $(word 2,$^) -out1 $(TARG_1) -out2 $(TARG_2)