makefile会把即将履行的指令行在指令履行前输出到屏幕上,运用@能够防止显现出指令自身
若@ echo 正在编译…则$make显现正在编译…
若echo 正在编译…则$make显现:
echo 正在编译正在编译
override
假如一个变量的值需求在编译选项中指定或由体系传入,那么makefile中能够运用override关键字来设置,使这个变量的赋值被疏忽
define
运用define关键字能够界说多行变量
define two-lines echo foo echo $(bar)endef
wildcard
wildcard是makefile的关键字,作用是让通配符(Makefile中的通配符便是*, %算pattern,不是通配符)在变量或函数中打开,一般用于提取指定目录的某一类型文件。由于在Makefile的规矩中,函数中的通配符是不会被打开的,网上有说法是变量的界说时也不会打开,但通过我的测验,变量的界说是能够打开的
DES:= ./*.call: @echo $(DES)./1.c ./2.c #变量能够打开
DES:=$(patsubst %.c,%.z,*.c)all: @echo $(DES)*.z #通配符不能在函数中打开
DES:=$(patsubst %.c,%.z,$(wildcard ./*.c))all: @echo $(DES)./1.z ./2.z #wildcard将通配符打开
export
将变量导出,以便于一切的子makefile都能够运用
include
和C言语的#include相同,将后边的文件打开到当时方位