课题_Makefile 使用总结 下载本文

# bash 中执行 make

$ make

aa bb cc

bb

单词个数统计函数: $(words <text>)

功能: 统计字符串 <text> 中单词的个数

返回: 单词个数

# Makefile 内容

all:

@echo $(words aa bb cc dd)

@echo $(words aabbccdd)

@echo $(words )

# bash 中执行 make

$ make

4

1

首单词函数: $(firstword <text>)

功能: 取字符串 <text> 中的第一个单词

返回: 字符串 <text> 中的第一个单词

# Makefile 内容

all:

@echo $(firstword aa bb cc dd)

@echo $(firstword aabbccdd)

@echo $(firstword )

# bash 中执行 make

$ make

aa

aabbccdd

3.4.2 文件名函数

取目录函数: $(dir <names...>)

功能: 从文件名序列 <names> 中取出目录部分

返回: 文件名序列 <names> 中的目录部分

# Makefile 内容

all:

@echo $(dir /home/a.c ./bb.c ../c.c d.c)

# bash 中执行 make

$ make

/home/ ./ ../ ./

取文件函数: $(notdir <names...>)

功能: 从文件名序列 <names> 中取出非目录部分

返回: 文件名序列 <names> 中的非目录部分

# Makefile 内容

all:

@echo $(notdir /home/a.c ./bb.c ../c.c d.c)

# bash 中执行 make

$ make

a.c bb.c c.c d.c

取后缀函数: $(suffix <names...>)

功能: 从文件名序列 <names> 中取出各个文件名的后缀

返回: 文件名序列 <names> 中各个文件名的后缀, 没有后缀则返回空字符串

# Makefile 内容

all:

@echo $(suffix /home/a.c ./b.o ../c.a d)

# bash 中执行 make

$ make

.c .o .a

取前缀函数: $(basename <names...>)

功能: 从文件名序列 <names> 中取出各个文件名的前缀

返回: 文件名序列 <names> 中各个文件名的前缀, 没有前缀则返回空字符串

# Makefile 内容

all:

@echo $(basename /home/a.c ./b.o ../c.a /home/.d .e)

# bash 中执行 make

$ make

/home/a ./b ../c /home/

加后缀函数: $(addsuffix <suffix>,<names...>)

功能: 把后缀 <suffix> 加到 <names> 中的每个单词后面

返回: 加过后缀的文件名序列

# Makefile 内容

all:

@echo $(addsuffix .c,/home/a b ./c.o ../d.c)

# bash 中执行 make

$ make

/home/a.c b.c ./c.o.c ../d.c.c

加前缀函数: $(addprefix <prefix>,<names...>)

功能: 把前缀 <prefix> 加到 <names> 中的每个单词前面

返回: 加过前缀的文件名序列

# Makefile 内容

all:

@echo $(addprefix test_,/home/a.c b.c ./d.c)

# bash 中执行 make

$ make

test_/home/a.c test_b.c test_./d.c

连接函数: $(join <list1>,<list2>)

功能: <list2> 中对应的单词加到 <list1> 后面

返回: 连接后的字符串

# Makefile 内容

all:

@echo $(join a b c d,1 2 3 4)

@echo $(join a b c d,1 2 3 4 5)

@echo $(join a b c d e,1 2 3 4)

# bash 中执行 make

$ make

a1 b2 c3 d4

a1 b2 c3 d4 5

a1 b2 c3 d4 e

3.4.3 foreach

语法:

$(foreach <var>,<list>,<text>)

示例:

# Makefile 内容

targets := a b c d

objects := $(foreach i,$(targets),$(i).o)