Makefile静态规则语法说明

时间:2015-01-17 22:25:02

标签: makefile

这是静态规则的makefile代码示例的片段:

objects = foo.o bar.o

all: $(objects)

$(objects): %.o: %.c
        $(CC) -c $(CFLAGS) $< -o $@

这意味着什么:

target : %.o : %.c

这是否意味着目标:%。o和%。o:%。c解释目标的所有依赖关系都将由%.o规则生成,并且配方应用于%和%的所有依赖关系。 o将由%.c生成规则并应用配方?

请有人澄清一下:

1. makefile中的静态规则是什么解释语法?

2.配方是否适用于%.o和%.c规则?

3.连接目标:$(全部).o $(全部).o:$(全部).c 其中全部包含没有任何扩展名的所有文件名?

1 个答案:

答案 0 :(得分:1)

您的代码段:

objects = foo.o bar.o

all: $(objects)

$(objects): %.o: %.c
        $(CC) -c $(CFLAGS) $< -o $@

扩展为(在扩展变量之后):

all: foo.o bar.o

foo.o bar.o: %.o: %.c
        $(CC) -c $(CFLAGS) $< -o $@

这是写作的简写:

foo.o: foo.c
        $(CC) -c $(CFLAGS) $< -o $@
bar.o: bar.c
        $(CC) -c $(CFLAGS) $< -o $@

因此,简而言之,对于目标列表中的每个目标,应用模式并为结果创建静态规则。