Makefile模式规则与自动变量

简介: Makefile模式规则与自动变量

Makefile模式规则与自动变量

在Makefile中,模式规则和自动变量是强大的工具,它们使得编写灵活和通用的构建规则更为容易。下面下面让我举一些关于模式规则和自动变量的代码示例:

1. 模式规则示例:

假设我们有一组源文件,它们的扩展名是.c,我们想要编译它们生成相应的目标文件。可以使用模式规则来实现:

# 模式规则

%.o: %.c

   gcc -c $< -o $@

 

# 构建目标

all: file1.o file2.o file3.o

 

# 默认规则

file1.o: file1.c

file2.o: file2.c

file3.o: file3.c

 

在这个例子中,%.o: %.c 定义了一个模式规则,它告诉Makefile如何生成目标文件(.o)从对应的源文件(.c)。通过这个规则,可以使用自动变量 $< 表示规则的第一个依赖(源文件),$@ 表示规则的目标(目标文件)。在 all 目标中列出需要构建的目标文件,Makefile 会自动使用模式规则进行编译。

2. 自动变量示例:

自动变量是Makefile提供的用于表示规则中特定部分的变量,它们会根据上下文自动被赋值。例如:

# 模式规则

%.o: %.c

   gcc -c $< -o $@

 

# 构建目标

all: file1.o file2.o file3.o

 

# 默认规则

file1.o: file1.c

file2.o: file2.c

file3.o: file3.c

 

# 清理规则

clean:

   rm -f *.o

 

在这个例子中,$< 表示规则的第一个依赖(源文件),$@ 表示规则的目标(目标文件)。在 clean 规则中,我们使用了自动变量 *.o 表示所有的目标文件。当运行 make clean 时,Makefile 将删除所有生成的目标文件。

3. 模式规则和自动变量的结合:

# 模式规则
%.o: %.c
    gcc -c $< -o $@
 
# 构建目标
all: file1.o file2.o file3.o
 
# 默认规则
file1.o: file1.c
file2.o: file2.c
file3.o: file3.c
 
# 可执行文件规则
my_program: file1.o file2.o file3.o
    gcc $^ -o $@
 
# 清理规则
clean:
    rm -f *.o my_program

 

在这个例子中,我们使用了模式规则来编译源文件为目标文件,并在 my_program 规则中使用了自动变量 $^ 表示所有的依赖文件(目标文件),$@ 表示规则的目标(可执行文件)。这样,当需要生成可执行文件时,Makefile 会自动根据模式规则生成目标文件,然后链接它们生成可执行文件。

这些示例演示了如何使用模式规则和自动变量创建更灵活和通用的Makefile。它们使得构建系统更易于维护,因为可以适应不同的源文件和目标。

相关文章
makefile 变量的替换,嵌套引用,命令行变量
makefile 变量的替换,嵌套引用,命令行变量
109 1
|
Shell
makefile 变量的扩展
makefile 变量的扩展
47 1
|
Linux Windows
makefile 结构规则,依赖,伪目标
makefile 结构规则,依赖,伪目标
118 0
|
运维 Shell Linux
【运维知识高级篇】超详细的Shell编程讲解1(Shell作用+脚本书写方式+脚本执行方式+变量分类+变量配置文件+变量定义+Shell重要的位置变量+三种传参方式)
【运维知识高级篇】超详细的Shell编程讲解1(Shell作用+脚本书写方式+脚本执行方式+变量分类+变量配置文件+变量定义+Shell重要的位置变量+三种传参方式)
359 1
|
小程序 UED
小程序审核规则大致内容
小程序审核规则大致内容
小程序审核规则大致内容
模式变量
模式变量
72 0
脚本变量中包含空格的解决办法
脚本变量中包含空格的解决办法
200 0
|
缓存 开发工具 git
.gitignore忽略规则、语法、检查文件详解
.gitignore忽略规则、语法、检查文件详解
797 0