📜  Makefile $@ $^ $< (1)

📅  最后修改于: 2023-12-03 14:44:07.819000             🧑  作者: Mango

Makefile指令

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可以使编译和链接过程更加自动化和高效化,节省程序员大量的时间和精力。