make只会执行第一个出现的规则,规则中有多个目标时,只执行第一个目标。
有两个例外:
1.以句号开头的target会被忽略
2.模板规则会被忽略
如下,前两个规则不会被认为是默认规则:
BINODIR=a
.c: $(BINODIR).c
echo "111111111111"
%.o: $(BINODIR).c
echo "22222222222"
a.out:a.c
gcc a.c -o a.out
至于模板规则可以理解成就是target中带%的:
类似如下第一个hilink_hislip并不是规则,而是在显示执行下面的hilink_hislip规则时会对变量赋值:
APP_USR_TARGET=0
APP_HISLIP_TARGET=1
APP_TARGET_NAME=$(APP_USR_TARGET)
hilink_hislip:APP_TARGET_NAME=5
all:a.c
echo $(APP_TARGET_NAME)
gcc a.c -o a.out
hilink_hislip:
echo $(APP_TARGET_NAME)
.PHONY:t1
t1:
echo "666666"