1.gcc库文件先后顺序有影响!后写的(lib2.a)可以依赖先写的(lib1.a),顺序不能反过来:
gcc lib1.a lib2.a -o main
2.VPATH 可指定源文件的文件路径,但引用头文件路径应该由 '-I dir'指定,可用vpath 匹配模式:
vpath %.c src
vpath %.h include
3.$^ 和$+ 含有一样,都表示所有列出的依赖,但是后者不会去重(在出现库文件循环引用时有用)。
4.解决A、B库的循环引用问题:
gcc -lA -lB -lA -o main
5.lval?=rval 以及:=,=,+=。?=只有在lval不存在才赋值,:=就是最普通的赋值,=是延迟赋值,在使用lval时,会用 最新的rval跟新lval,+=见名知意。
6.可以为专属工作目标设置不同的变量:
gui.o:CPPFLAGS += -DUSE_NEW_MALLOC=1
gui.o:gui.c
...
7.Makefile里面变量赋值中,lval前面加上‘override’ 可覆盖命令行指定的值。
8.未完待续。。。