📅  最后修改于: 2023-12-03 14:44:07.864000             🧑  作者: Mango
Makefile是一种声明式的工具,用于自动化构建和管理工程项目。Makefile中包含一系列规则,每个规则定义了一条依赖关系和相应的动作,用于生成或更新目标文件。
一个Makefile规则由三部分组成:
target: dependencies
recipe
target
: 目标文件或执行动作的名称。dependencies
: 目标文件所依赖的文件列表。recipe
: 生成目标文件的脚本或命令。其中,每个部分都需要使用TAB键缩进。
# 生成可执行文件app
app: main.o utils.o
gcc -o app main.o utils.o
# 生成main.o目标文件
main.o: main.c utils.h
gcc -c main.c
# 生成utils.o目标文件
utils.o: utils.c utils.h
gcc -c utils.c
这个示例中,我们定义了三个规则。第一个规则用于生成可执行文件app
,它依赖于main.o
和utils.o
两个目标文件。当main.o
或utils.o
被更新后,app
也需要被重新生成。执行动作是将main.o
和utils.o
链接到一起生成可执行文件。
第二个规则用于生成main.o
目标文件,它依赖于main.c
和utils.h
两个文件。如果main.c
或utils.h
被更新,main.o
也需要被重新生成。执行动作是将main.c
编译为目标文件。
第三个规则用于生成utils.o
目标文件,它依赖于utils.c
和utils.h
两个文件。如果utils.c
或utils.h
被更新,utils.o
也需要被重新生成。执行动作是将utils.c
编译为目标文件。
Makefile是一个功能强大的工具,它可以自动化完成很多工程化任务。在编写Makefile时,需要注意格式和语法的正确性,以确保正常工作。