2013-07-11 32 views
1

我正在使用makefile,我目前正在調試模式下運行。我注意到「把孩子0x5435etc PID 2344放在鏈上」這種makefile的方式是記住生成的文件是什麼?Makefile把孩子放在鏈上

我問,因爲我正在使用一種工具來生成一堆不同類型的目標文件,如下所示。

%.v: $.rdl 
     (Generates .html, .v, .vh, .xml, .spirit.xml, etc into current directory) 

該工具按預期和期望生成所有文件。

Makefile的運行目標

vpath %.spirit.xml ${list_of_directories} 
    %.ralf: %.spirit.xml 
     (Generates a .ralf and .spirit.ralf) 

的我第一次在它生成的文件.V上的第一個目標列表中一個乾淨的目錄運行「$化妝」,但隨後在第一個失敗.ralf。如果我再次運行「$ make」,它會正確構建所有的.ralf文件。任何可能的簡單答案?我注意到,當它將孩子放入%.v目標鏈時,它只能放入.v文件!我以爲它可能不知道其他人存在!

+0

爲什麼我被標記下來? – Matt

回答

2

是的,你需要告訴讓那個命令產生多個輸出。

這應該工作:

%.html %.v %.vh %.xml %.spirit.xml: %.rdl 
     # command 

Pattern examples的說明書中無。

+0

我明白了!這就說得通了!這是否告訴我們只有一種情況可以保證一次製作所有這些文件? – Matt

+0

如果我生成一些名稱不同於目標的文件,該怎麼辦? – Matt

+0

@MattCarlis是的,這表明'命令'一次生成所有這些文件。手冊[模式規則示例](http://www.gnu.org/software/make/manual/make.html#Pattern-Examples)部分中的最後一個示例更詳細地解釋了它。 – andrewdotn