makefile 通配符与函数说明

makefile变量定义

CFLAG=-g -Wall
TARGET=run
makefile通配符使用

当前所有的cpp文件 SRC=$(wildcard ./*.cpp)
当前所有的cpp文件替换成o文件 OBJ=$(SRC:.cpp=.o)

makefile函数使用

实例

CC=@g++
CFLAG=-g -O -fpermissive
MYSQL=/usr/local/mysql
INCLUDE=-I$(MYSQL)/include
LIBDIR=-L$(MYSQL)/lib
LIB=-lmysqlclient

TARGET=run
PRJDIR=.
SRC=$(wildcard $(PRJDIR)/*.cpp)
OBJ=$(SRC:.cpp=.o)

all: $(TARGET)
$(OBJ):%.o:%.cpp
	@echo compiling $< ...
	$(CC) -c -o $(PRJDIR)/$@ $(PRJDIR)/$< $(CFLAG) $(INCLUDE)
$(TARGET): $(OBJ)
	$(CC) -o $(PRJDIR)/$@ $(PRJDIR)/$^ $(LIBDIR) $(LIB)
	@echo done
clean:
	rm -f $(OBJ) ./$(TARGET)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: makefile中的wildcard函数是一个用于查找文件的函数。它可以在makefile中使用通配符来查找指定目录下的文件,并将结果返回给makefile。例如,$(wildcard *.c)将查找当前目录下所有以.c结尾的文件,并将它们返回给makefile。这个函数makefile中非常有用,可以帮助我们自动化构建过程中的文件查找和处理。 ### 回答2: makefile的wildcard函数是常用的函数之一,它能够返回指定文件夹下的所有符合指定规则的文件名,并返回这些文件名列表。wildcard函数通常用于指定需要编译的文件名,也可以用于反复使用的文件名列表中。 wildcard函数的一般语法为: $(wildcard PATTERN),其中PATTERN表示要匹配的文件名规则。 wildcard函数返回的是一个由匹配的文件名组成的列表,可以使用变量来存储这个列表。 例如,假设要编译source文件夹下所有以.c为后缀的文件,可以在makefile中使用以下代码: ``` SRC_FILES=$(wildcard ./source/*.c) gcc -o program $(SRC_FILES) ``` 这里,wildcard函数返回了source文件夹下所有以.c结尾的文件名列表,保存在变量SRC_FILES中,然后使用gcc命令编译所有这些文件,并生成一个名为program的可执行文件。 可以使用通配符'*'和'?'在PATTERN中指定通配符规则,'*'表示任意多个字符,'?'表示一个任意字符。例如,'*.c'匹配所有以.c结尾的文件名,'?abc.c'匹配所有第二个字符为a,后面紧接着abc.c的文件名。 可以使用多个wildcard函数来匹配多个不同的文件规则和文件夹。示例代码如下: ``` C_FILES=$(wildcard ./source/*.c) ASM_FILES=$(wildcard ./assembly/*.s) OBJ_FILES=$(wildcard ./obj/*.o) gcc -o program $(C_FILES) $(ASM_FILES) $(OBJ_FILES) ``` 在这个例子中,C_FILES变量匹配source文件夹下所有以.c结尾的文件名,ASM_FILES变量匹配assembly文件夹下所有以.s结尾的文件名,OBJ_FILES变量匹配obj文件夹下所有以.o结尾的文件名。这些变量被用来编译生成一个名为program的可执行文件。 在组织大型项目或使用复杂的目录结构时,使用makefile的wildcard函数可以大大简化makefile文件的编写,提高工作效率。 ### 回答3: makefile 是一种用来自动化编译软件的工具,其中 wildcard 函数是其实现过程中的一个重要函数。在 makefile 中,通配符是一种惯用手法,它可以帮助我们在编译程序时,方便快捷地匹配文件和目录,避免了手动输入冗长的文件名的麻烦。而 wildcard 函数则是用来扩展通配符的,使其能够匹配更多的文件和目录。 wildcard 函数的语法格式为 $(wildcard pattern),其中 pattern 表示通配符表达式,函数会将其匹配的所有文件和目录以空格分隔的字符串列表形式返回给 makefile。例如,$(wildcard *.c) 将会匹配所有以 .c 后缀结尾的文件,并将其返回成字符串列表形式。 Wildcard 函数的实用性非常高,在 makefile 的使用中应用广泛。通过 wildcard 函数,我们可以对文件进行过滤和筛选,便于其它函数的处理。例如,在 makefile 编译程序时,我们经常需要对指定目录下的特定文件进行编译操作,而此时使用 wildcard 函数就可以很方便地获取指定目录下所有符合指定格式的文件名,然后传递给 make 工具来编译。 此外,wildcard 函数还可以与其它函数组合使用,比如与 foreach 函数一起使用,可以将通配符扩展得更细致、更智能化。比如,我们可以使用 foreach 函数遍历所有符合条件的文件,然后对它们依次执行编译操作,这样就能够实现更加灵活、强大的操作了。 总的来说,wildcard 函数makefile 的使用中非常实用,它能够帮助我们更快捷地获取指定的文件和目录列表,方便程序的编译和处理。因此,在学习和使用 makefile 时,我们一定要重视 wildcard 函数的掌握和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值