当然,我也同样可以为某个目标设置局部变量,这种变量被称为“Target-specific Variable”,它可以和“全局变量”同名,因为它的作用范围只在这条规则以及连带规则中,所以其值也只在作用范围内有效。而不会影响规则链以外的全局变量的值。

    <variable-assignment>;可以是前面讲过的各种赋值表达式,如 = 、 、 += ?= 。第二个语法是针对于make命令行带入的变量,或是系统环境变量。

    1. prog : CFLAGS = -g
    2. prog : prog.o foo.o bar.o
    3. $(CC) $(CFLAGS) prog.o foo.o bar.o
    4. prog.o : prog.c
    5. $(CC) $(CFLAGS) prog.c
    6.  
    7. $(CC) $(CFLAGS) foo.c
    8.  
    9. bar.o : bar.c

    在这个示例中,不管全局的 $(CFLAGS) 的值是什么,在prog目标,以及其所引发的所有规则中(prog.o foo.o bar.o的规则), 的值都是 -g