Copyright © 2022-2025 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.4·
页面加载耗时 0.00 毫秒·物理内存 73.5MB ·虚拟内存 1300.8MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
我们通过两个 Makefile 范例,进一步理解编写 Makefile 规则,以及 Makefile 的运行过程。
.PHONY: cleanall cleanobj cleandiff cleanall : cleanobj cleandiff rm program cleanobj : rm *.o cleandiff : rm *.diff
上面代码可以调用不同目标,删除不同后缀名的文件,也可以调用一个目标(cleanall),删除所有指定类型的文件。
.PHONY 定义了三个伪目标:cleanall cleanobj cleandiff。
如果运行 make,后面不跟参数,那么将执行第一条规则 cleanall。
edit : main.o kbd.o command.o display.o cc -o edit main.o kbd.o command.o display.o main.o : main.c defs.h cc -c main.c kbd.o : kbd.c defs.h command.h cc -c kbd.c command.o : command.c defs.h command.h cc -c command.c display.o : display.c defs.h cc -c display.c .PHONY: clean clean : rm edit main.o kbd.o command.o display.o
执行 make 或者 make edit,将编译链接整个工程,生成 edit 可执行文件。
clean 是伪目标,用于清理中间文件 *.o,但运行 make 或者 make edit 时不会被执行,因为它不是 edit 规则的前置条件。
如果将第一条规则修改为以下内容,那么 clean 规则将会被执行。
edit : main.o kbd.o command.o display.o clean