这是静态规则的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 其中全部包含没有任何扩展名的所有文件名?
答案 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 $@
因此,简而言之,对于目标列表中的每个目标,应用模式并为结果创建静态规则。