Makefile函数的使用(1)

简介: Makefile函数的使用(1)

Makefile函数的使用

Makefile 是一个用于自动化编译程序的工具,它允许用户定义一系列规则以描述文件之间的依赖关系,并指定如何生成目标文件。Makefile 中的函数可以帮助用户在规则中执行各种操作,例如文件操作、字符串处理等。下面是几个常用的 Makefile 函数及其使用示例:

1. $(shell ...)

该函数用于在 Makefile 中执行 shell 命令,并返回其输出结果。

# 示例:获取当前时间并赋值给变量

CURRENT_TIME := $(shell date)

 

# 示例:列出当前目录下的所有文件

FILES := $(shell ls)

 

2. $(wildcard ...)

该函数用于匹配文件名模式,并返回匹配的文件列表。

# 示例:获取当前目录下所有的 .c 文件

C_FILES := $(wildcard *.c)

 

# 示例:获取当前目录及其子目录下所有的 .h 文件

H_FILES := $(wildcard *.h */*.h)

 

3. $(foreach ..., ..., ...)

该函数用于迭代处理列表中的每个元素。

# 示例:打印列表中的每个文件名

FILES := file1.c file2.c file3.c

$(foreach file,$(FILES),$(info $(file)))

 

4. $(subst ..., ..., ...)

该函数用于替换字符串中的子字符串。

# 示例:将文件名中的 .c 替换为 .o

OBJ_FILES := $(subst .c,.o,$(C_FILES))

 

5. $(addprefix ..., ...)

该函数用于给列表中的每个元素添加前缀。

# 示例:给所有 .c 文件添加路径前缀

SRC_FILES := file1.c file2.c file3.c

ALL_FILES := $(addprefix src/,$(SRC_FILES))

 

6. $(addsuffix ..., ...)

该函数用于给列表中的每个元素添加后缀。

# 示例:给所有文件添加 .obj 后缀

OBJ_FILES := $(addsuffix .obj,$(FILES))

 

7. $(if ..., ..., ...)

该函数用于条件判断。

# 示例:根据条件编译不同的代码

DEBUG := 1

ifeq ($(DEBUG),1)

   CFLAGS := -g

else

   CFLAGS := -O2

endif

 

这些示例展示了 Makefile 函数的一些常见用法,可以帮助用户更灵活地管理和处理文件、变量等内容。通过结合这些函数,可以构建出更复杂、更灵活的 Makefile 规则,以满足各种编译和构建需求。

相关文章
|
11月前
|
Shell Linux Go
一日一技:5分钟掌握 Makefile
一日一技:5分钟掌握 Makefile
118 0
|
编译器 C语言 C++
Makefile中常见的gcc编译参数
Makefile中常见的gcc编译参数
337 0
|
IDE Linux Shell
【Makefile】简单的Makefile编写
【Makefile】简单的Makefile编写
|
Java C语言
Makefile2
规范 target可以是Object file, 可执行文件或者标签(标签一般没有依赖) 越靠近最终结果的target卸载越前面 定义target前, 定义CC, SRC, CFLAGS, OBJS, INCLUDES, RM, COPY等变量方便修改 在以前使用gcc编译时, 一般直接使用gcc编程链接成可执行文件, 但是在makefile中.
961 0
|
C语言
makefile中伪目标的理解
1. 我们知道Makefile中的语法是这样: target ... : prerequisites ... command … …   2. 假如编译两个文件可以这么写: a.o:a.c  gcc -c a.c b.o:b.c  gcc -c b.c Test: a.o b.o   gcc -o Test a.o b.oclean:  rm *.o 我们可以单独这么运行:make a.o或者make b.o或者make clean注意上面三个的区别。
1183 0