2012-01-11 58 views
2

對於EG。一個單一的目標,如果我是編譯一堆文件的硬件描述語言,我可以通過以下方式寫一個Makefile規則,對有多個dependacies

analyze: a.v b.v c.v top.v 
     vcs $(OPTIONS) a.v 
     vcs $(OPTIONS) b.v 
     vcs $(OPTIONS) c.v 
     vcs $(OPTIONS) top.v 

製作寫一個Makefile分析,將編譯其依賴關係中的所有文件&構建最終的可執行文件。我怎麼能寫一個「單一的Makefile規則」,這將編譯所有依賴並生成可執行文件 - 模仿上面的規則是這樣的:

analyze: %.v 
     vcs $(OPTIONS) %.v 

上述工程單個文件的依賴。但是,如果我有多個文件依賴關係,我將如何處理多個文件?我可以爲所有的依賴項使用「for循環」嗎?我正在尋找Makefile選項來訪問for循環中使用的「依賴文件」,但無法找到它。

回答

2

使用假郵票目標每個待分析文件中:

analyze : a.analyzed-stamp b.analyzed-stamp c.analyzed-stamp top.analyzed-stamp 

%.analyzed-stamp : %.v 
    vcs $(OPTIONS) $< 
    touch [email protected] 
+0

真棒。非常感謝 – Mike 2012-01-11 16:49:57

+0

上述解決方案有效,但也會創建* .analyzed-stamp文件。相反,Makefile中還有其他優雅的解決方案,其中「for循環」會自動循環目標中的所有依賴文件並生成最終的可執行文件。原因是我有大約900個設計(* .v)文件,並且許多「* .analyzed-stamp」文件充斥着Makefile運行目錄 – Mike 2012-01-11 17:47:38

+0

添加用於分析目標「rm * .analyzed-stamp」的操作將清理目錄。爲了知識的緣故,仍然想知道是否有任何由make支持的特殊變量,幫助「for循環」遍歷目標的所有依賴關係。 – Mike 2012-01-11 17:55:25