📅  最后修改于: 2023-12-03 14:44:07.819000             🧑  作者: Mango
Makefile是一种可以自动化编译和链接程序的工具,它可以大大提高程序员的工作效率和减轻工作负担。其中,$@、$^和$<是Makefile中常用的占位符,用于引用目标、依赖和第一个依赖文件。
$@
表示目标文件,它可以代替要生成的文件名。在Makefile中,目标文件通常是由源文件编译而来的,因此,$@
通常代表的是最终生成的可执行文件或者库文件名。
# 编译.c文件为.o文件(目标文件)
%.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
上面的代码中,$<
表示第一个依赖文件(即.c文件),$@
表示目标文件(即生成的.o文件)。
$^
表示所有的依赖文件,它可以代替所有所需的依赖文件的文件名。在Makefile中,依赖文件通常是源文件或者头文件,它们需要被编译或者链接到最终的目标文件中去。
# 编译多个.o文件为可执行文件
main: main.o func1.o func2.o
$(CC) $^ -o $@
上面的代码中,$^
表示所有的依赖文件,也就是main.o、func1.o和func2.o三个文件。
$<
表示第一个依赖文件,它可以代替第一个需要被编译或链接的依赖文件的文件名。在Makefile中,第一个依赖文件通常是源文件或者头文件,它需要被编译或者链接到最终的目标文件中去。
# 生成字节码文件
%.pyc: %.py
$(PY) -m compileall $<
上面的代码中,$<
表示第一个依赖文件,也就是.py文件。
总结:
$@
表示目标文件;$^
表示所有的依赖文件;$<
表示第一个依赖文件。使用Makefile可以使编译和链接过程更加自动化和高效化,节省程序员大量的时间和精力。