2011-07-13 61 views
0

目前我有一個帶有多個目標規則的Makefile。它記錄目標,然後使用該目標集調用新的Make。在Makefile中記錄當前目標

E.g.

$(LIST_OF_PRODUCTS) : 
    @echo Making [email protected] 
    @make build_product [email protected] 

輸出目錄和二進制文件,然後使用這個產品的名稱..

如何錄製目前正在建設中的多目標規則的目標,而不必調用一個新的製作實例?

我曾嘗試:

$(LIST_OF_PRODUCTS) : PRODUCT := [email protected] 
$(LIST_OF_PRODUCTS) : build_product 
     @echo Making $(PRODUCT) Done. 

但是,這是行不通的。

+0

根據您想在'build_product'達到的目標,你可以使用'define'爲一個規則,然後你就可以調用創建排序模板與'$(eval ...)'和'$(call ...)'相結合。 – eriktous

回答

0

我想出了最好的是GNU使模板方法:

# 
# Template for creating a target 
define target-template 
.PHONY : ${1} 
${1} : TARGET_NAME:=${1} 
${1} : check_target $$(OBJECTS) 
endef 

# 
#Generate targets from template 
$(foreach target,$(TARGET_LIST),$(eval $(call target-template,$(target)))) 

但是它只是把我的問題在其他地方。由於只有在通過組調用目標​​時才調用check_target一次?

E..g

all : target_a target_b 
+2

目前還不清楚你想達到什麼目標。我有一種感覺,它可以做得更簡單。 – pmod