2012-08-09 99 views
9

例如,我有一個持有依賴如何更改makefile變量文件擴展名?

BOARDS:=lance.mcm light.mcm sac.mcm 

我需要一個名爲NET這樣

NET:=lance.net light.net sac.net 

應設定另一個變量列表的變量,當我改變板變量, NET也應該改變。 例如,如果我將一個新的zor.mcm添加到BOARDS變量中,它應該自動將zor.net添加到NET變量中。

+0

Superset:multiple ext ensions:http://stackoverflow.com/questions/12069457/how-to-change-the-extension-of-each-file-in-a-list-with-multiple-extensions-in-g – 2015-07-04 10:27:27

回答

22

我已經找到了最好的解決辦法就是用這種語法:

NET:=$(BOARDS:.mcm=.net) 

這將着眼於董事會和改變.mcm到.NET

+0

多一點解釋在[如何更改GNU make中的多個擴展名的列表中每個文件的擴展名?](http://stackoverflow.com/a/12071918/1730674) – askewchan 2015-09-26 21:57:14

9

作爲替代方案:

BOARDS:=lance.mcm light.mcm sac.mcm 
NET:= $(addsuffix .net, $(basename $(BOARDS))) 

這將保留文件路徑名內的內容,如果它們匹配模式

+0

這就是爲什麼我首先發布了這個問題。這是完美的,謝謝! – wonton 2012-08-09 17:54:31