📅  最后修改于: 2023-12-03 15:32:48.240000             🧑  作者: Mango
Makefile 是一种自动化编译的工具,它可以将源代码文件自动转换为可执行的二进制文件。Makefile 扩展是一种对 Makefile 文件扩展的方式,使其支持更多的功能和更复杂的编译规则。以下是一些常见的 Makefile 扩展。
VPATH 是一个变量,用于指定 make 查找文件的目录。它可以包含多个目录,用冒号分隔。假如我们的源代码文件存放在 src 目录下,我们可以将 VPATH 设置如下:
VPATH = src
这样,make 程序在寻找源代码文件时,会优先在 src 目录下查找。
PHONY 是一个关键字,用于告诉 make 程序,某些规则不是具体的文件,而仅仅是一个规则名。例如:
.PHONY: clean
clean:
rm -f *.o
这里,我们定义了一个名为 clean 的规则,它的作用是删除所有的 .o 文件。我们使用 .PHONY 告诉 make,clean 不是一个具体的文件,而是一个规则名。这样,当我们执行 make clean 命令时,make 程序不会寻找 clean 文件。
Conditional 是一个条件判断语句,用于在 Makefile 中进行条件判断。例如:
ifeq ($(DEBUG),yes)
CFLAGS += -g
LIBS += -lm_debug
else
CFLAGS += -O2
LIBS += -lm
endif
这里,我们定义了一个条件判断,它的作用是根据 DEBUG 变量的值来确定编译选项和链接库。如果 DEBUG 变量的值为 yes,那么编译选项将包含 -g 选项,链接库将使用 lm_debug 库。否则,编译选项将包含 -O2 选项,链接库将使用 lm 库。
Functions 是一些预定义的函数,可以在 Makefile 中使用。以下是一些常用的函数:
我们可以在 Makefile 中使用这些函数来实现更复杂的编译规则。
以上是一些常见的 Makefile 扩展,它们可以帮助我们更方便地管理和编译源代码。