2014-10-10 67 views
0

我想寫一個與相關的預先依賴的make規則。GNU使相互依賴的前提

a: b $(FILES) 

b: $(FILE_1) 
    $(eval FILES := some_function_using_file($(FILE_1))) 

$(FILES): 
    do something ... 

基本上,我需要$(FILE_1)來獲得$(FILES)。當在文件中進行第一次讀取時,下面的這個規則不存在,因爲$(FILES)最初沒有被定義,而是被動態評估。

$(FILES): 
    do something ... 

有沒有辦法讓這項工作?我想動態創建$(文件),然後運行它的規則。

回答

0

目標在任何運行之前都會被評估。您最好的選擇是在發生這種情況之前生成列表。

FILES = $(shell ls) new.txt 

all: $(FILES) 

$(FILES): 
    echo [email protected] 

如果你真的很絕望,你可以從makefile中生成另一個makefile並調用make的另一個副本。

+0

或['include'](https://www.gnu.org/software/make/manual/html_node/Include.html)生成的makefile。 – reinierpost 2014-10-13 08:44:47

+0

包括在制定任何目標之前都會工作,但我認爲您不能在OPs示例中的目標內執行此操作。 – 2014-10-13 12:07:48