前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Makefile中的字符串替换

Makefile中的字符串替换

作者头像
mingjie
发布2023-10-13 10:28:19
3820
发布2023-10-13 10:28:19
举报

Makefile中的字符串替换,做下验证和总结。

案例:Makefile Tutotial中一段代码

Makefile Tutotial最后给出了一段makefile,里面OBJS有字符串通配、替换的过程:

Makefile

代码语言:javascript
复制
SRC_DIRS := ./src
BUILD_DIR := ./build

SRCS := $(shell find $(SRC_DIRS) -name '*.cpp' -or -name '*.c' -or -name '*.s')
OBJS := $(SRCS:%=$(BUILD_DIR)/%.o)

TAR:
    @echo SRCS : $(SRCS)
    @echo OBJS : $(OBJS)

执行

代码语言:javascript
复制
touch aa123zz.c
touch aa332dzz.cpp
touch aa44325drzz.cpp
make

输出

代码语言:javascript
复制
SRCS : ./aa123zz.c ./aa44325drzz.cpp ./aa332dzz.cpp
OBJS : ./build/./aa123zz.c.o ./build/./aa44325drzz.cpp.o ./build/./aa332dzz.cpp.o

(SRCS:%=(BUILD_DIR)/%.o)如何匹配的还是比较困惑,下面做一些实验和总结。

Makefile字符串替换规则

场景一:整体匹配替换

Makefile

代码语言:javascript
复制
SRCS := ./aa123zz.c ./aa44325drzz.cpp ./aa332dzz.cpp
OBJS := $(SRCS:.cpp=.cxx)

TAR:
    @echo SRCS : $(SRCS)
    @echo OBJS : $(OBJS)

输出

代码语言:javascript
复制
make
SRCS : ./aa123zz.c ./aa44325drzz.cpp ./aa332dzz.cpp
OBJS : ./aa123zz.c ./aa44325drzz.cxx ./aa332dzz.cxx

规则:注意字符串中的空格起到分隔作用,分隔的每一个字符串都会应用下面规则

代码语言:javascript
复制
$(变量名:旧值=新值)

场景二:通配符替换

Makefile

代码语言:javascript
复制
SRCS := ./aa123zz.c ./aa44325drzz.cpp ./aa332dzz.cpp
OBJS := $(SRCS:./aa%zz.cpp=./AA%%ZZ.cxx)

TAR:
	@echo SRCS : $(SRCS)
	@echo OBJS : $(OBJS)

输出

代码语言:javascript
复制
make
SRCS : ./aa123zz.c ./aa44325drzz.cpp ./aa332dzz.cpp
OBJS : ./aa123zz.c ./AA44325dr%ZZ.cxx ./AA332d%ZZ.cxx

规则:注意带通配符的话,旧值必须整体匹配,匹配一部分不行。

代码语言:javascript
复制
$(变量名:旧值带通配符)=新值带不带通配符都行通配符代表旧值中匹配的字符)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 案例:Makefile Tutotial中一段代码
  • Makefile字符串替换规则
    • 场景一:整体匹配替换
      • 场景二:通配符替换
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档