1. ${MODS:%=%.beam} 是Makefile 变量替换的一种方式.
其格式是 $(var:%.c=%.o)或${var:.c=.o},其意思是把.c 为结尾的变量替换成.o
2. %则代表任意匹配之外的字符串.
实例:
source:main.c onvif.c
object:$(var:%.c=%.o)
这个时候 %分别等于 main 与 onvif
而 object 则等于 main.o 与 onvif.o
注意:
在楼主的例子中${MODS:%=%.beam}
第一个%没有带任何过滤条件.%则表示任意字符串.
第二个%表示在字符串后面添加一个 .beam
${MODS:%=%.beam} 的意思是把为变量添加一个 .beam 后缀
makefile——小例子:
《Erlang程序设计》第六章中的例子:
hello.erl
-module(hello).
-export([start/0]).
start() ->
io:format("Hello world ~n").
shop.erl
-module(shop).
-export([cost/1]).
cost(oranges) ->
5;
cost(newspaper) ->
8;
cost(apples) ->
2;
cost(pears) ->
9;
cost(milk) ->
7.
makefile
.SUFFIXES: .erl .beam
.erl.beam:
erlc -W $<
ERL = erl -boot start_clean
MODS = hello shop
all: compile
compile: ${MODS:%=%.beam}
@echo "make clean - clean up"
clean:
rm -rf *.beam erl_crash.dump
编译成功,会出现hello.beam和shop.beam。