Makefile 中的规则
Posted rivsidn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Makefile 中的规则相关的知识,希望对你有一定的参考价值。
makefile 规则基本格式
一条 makefile 规则由以下几部分组成:
target ... : prerequisites ...
recipe
...
...
Please note: you need to put a tab character at the beginning of every recipe line!
makefile 没有在命令行中指定执行哪部分时候,第一个 target 会作为最终目标,下边所示的code生成 test_1.o 之后就会结束。
$ cat makefile
test_1.o : test_1.c
gcc -c test_1.c
test_2.o : test_2.c
gcc -c test_2.c
下边所示代码中,第一行为生成 test_1.o、 test_2.o 提供规则。也就是说,第一行的 target 不会成为 goal, goal 为 all。
$ cat makefile
%.o : %.c
gcc -c -O2 $<
all : test_1.o test_2.o
clean:
rm *.o
makefile 规则隐藏彩蛋
当最终的goal与prerequisites中某一个文件名相同时,会自动链接生成以该文件名命名的可执行文件。
$ cat Makefile TEST_1 := test_1.o TEST_2 := test_2.o test_1: $(TEST_1) $(TEST_2) clean: rm *.o
当一个target 分多次指定 prerequisites 时,多次指定的 prerequisites 都参与 target 的生成。
$ cat Makefile test : test_1.o test : test_2.o test : test.o
makefile 规则中特殊 target(GNU makefile 4.8)
某些名字作为 target 时有特殊意义。
- .EXPORT_ALL_VARIABLES 表示将所有的变量传递给下层makefile
以上是关于Makefile 中的规则的主要内容,如果未能解决你的问题,请参考以下文章