Makefile的命令必须以tab键开头
all:
gcc -c main.c -o main
gcc命令前面必须有Tab键
= 延时赋值(在使用的时候才赋值)
A=123
b=$(A)
A=456
echo "$(b)"
输出:456
:= 立即赋值(立即对变量赋值)
A=123
B=$(A)
A=456
echo "$(B)"
打印:123
?= 空赋值(变量为空,即为被赋值时才能赋值)
A?=123
A?=456
echo "$(A)"
打印:123(因为赋值456的时候A非空,所以赋值无效)
+= 追加赋值(原变量后面接着加)
A=123
A+=456
echo "$(A)"
打印:123 456
$< 第一个变量
$^ 全部变量
$@ 目标变量
all:targetA targetB
echo "$<"
echo "$^"
echo "$@"
targetA:
targetB:
输出:
targetA
targetA targetB
all
% 匹配任意字符(相当于 *)
main:main.o test.o
gcc -c main.c test.c -o main
%.o:%.c
gcc -c $< -o $@
此处%代表后缀为.o的字符串,即 main test字符串