📅  最后修改于: 2023-12-03 15:02:50.962000             🧑  作者: Mango
Makefile是一种类似于脚本语言的工具,用于自动化编译和构建软件。随着软件的复杂性越来越高,Makefile变得越来越重要,因为它可以帮助程序员自动化执行一些常见的、繁琐的任务,使他们能够更加专注于编写代码。
本文将介绍Makefile的一些常见参数,以及它们在Shell/Bash中的用法。
$( )
这个符号用于引用变量。例如,假设你定义了一个变量MY_VAR
,那么你可以使用$(MY_VAR)
来引用它。下面是一个简单的示例:
MY_VAR := hello
all:
echo $(MY_VAR)
当你运行make
命令时,它将输出hello
并结束。
$@
这个符号用于引用当前规则的目标。例如,如果你的规则定义了一个目标main
,那么你可以使用$@
来引用它。下面是一个示例:
main: main.o
gcc -o $@ $<
这个规则告诉Makefile,如果你想要生成main
这个目标,你需要首先生成main.o
,然后编译main.c
文件并链接它们。$@
在这里就是指main
这个目标名称。
$<
这个符号用于引用当前规则的第一个依赖项。例如,如果你的规则定义了一个目标main.o
以及一个依赖项main.c
,那么你可以使用$<
来引用它。下面是一个示例:
main.o: main.c
gcc -c -o $@ $<
这个规则告诉Makefile,如果你想要生成main.o
这个目标,你需要首先生成main.c
文件,并将它编译成一个目标文件。$<
在这里就是指main.c
这个依赖项。
$(shell )
这个符号用于执行Shell命令,并将结果返回给Makefile。例如,你可以使用它来获取当前的日期和时间。下面是一个示例:
DATETIME := $(shell date)
all:
echo $(DATETIME)
当你运行make
命令时,它将输出当前的日期和时间。
$(wildcard )
这个符号用于搜索文件系统,查找符合某个模式的文件,并将它们返回给Makefile。例如,你可以使用它来查找当前目录下所有的.c
文件。下面是一个示例:
SRCS := $(wildcard *.c)
all:
echo $(SRCS)
当你运行make
命令时,它将输出所有的.c
文件列表。
以上就是Makefile中一些常用的Shell/Bash参数,你可以在你的项目中使用它们来实现自动化编译和构建。