Makefile静态规则语法解释
Makefile static rule syntax explaination
这是静态规则的 makefile 代码示例的片段:
objects = foo.o bar.o
all: $(objects)
$(objects): %.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
这意味着什么:
target : %.o : %.c
这是否意味着 target : %.o 和 %.o : %.c 解释了目标的所有依赖项将由 %.o 规则生成并且配方应用于该规则以及所有依赖项%.o 将由 %.c 规则生成并应用配方?
请有人澄清一下:
1.Whatmakefile中的static规则有语法解释吗?
2.Does 配方适用于 %.o 和 %.c 规则?
3.Is 它连接 target : $(all).o 和 $(all).o : $(all).c 其中 all 包含没有任何扩展名的所有文件名?
您的代码段:
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 $@
这是一个shorthand 写作:
foo.o: foo.c
$(CC) -c $(CFLAGS) $< -o $@
bar.o: bar.c
$(CC) -c $(CFLAGS) $< -o $@
因此,简而言之,为目标列表中的每个目标应用模式并为结果创建静态规则。
这是静态规则的 makefile 代码示例的片段:
objects = foo.o bar.o
all: $(objects)
$(objects): %.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
这意味着什么:
target : %.o : %.c
这是否意味着 target : %.o 和 %.o : %.c 解释了目标的所有依赖项将由 %.o 规则生成并且配方应用于该规则以及所有依赖项%.o 将由 %.c 规则生成并应用配方?
请有人澄清一下:
1.Whatmakefile中的static规则有语法解释吗?
2.Does 配方适用于 %.o 和 %.c 规则?
3.Is 它连接 target : $(all).o 和 $(all).o : $(all).c 其中 all 包含没有任何扩展名的所有文件名?
您的代码段:
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 $@
这是一个shorthand 写作:
foo.o: foo.c
$(CC) -c $(CFLAGS) $< -o $@
bar.o: bar.c
$(CC) -c $(CFLAGS) $< -o $@
因此,简而言之,为目标列表中的每个目标应用模式并为结果创建静态规则。