2012-08-09 93 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