看懂makefile 常见各种函数使用 、关于patsubst 用法、Makefile不显示输出错误提示、Makefile中的 = := ?= +=

看懂makefile 常见各种函数使用

本次涉及函数有 :info 、abspath(同realpath)、lastword 、 dir。

  • $(MAKEFILE_LIST) : 当前文件,包括是谁include它的文件。
  • info : makefile的打印函数。
  • abspath(同realpath):makefile的获取当前文件所在的绝对路径。
  • lastword :以空格为结束符的最后一个字符
  • dir : 获取文件所在目录
  • wildcard: 匹配当前文件所在路径下关于某字符串,可以是文件名也可是文件夹名
  • filter 和 filter-out :过滤和反过滤 可参考博客
  • strip: 除去某变量中字符串的空格

DEMO:

Makefile:

$(info ========= ·hello Makefile· ===========)
$(info  )

include ./test.mk

all:
	@echo ""
	@echo -e "\033[;33;7m========= ·hello Makefile· ===========\033[0m"
	

test.mk:


$(info "当前文件是:$(MAKEFILE_LIST)")
$(info "当前文件的最后一个文件:$(lastword $(MAKEFILE_LIST))")
$(info "当前文件所在路径:$(dir $(MAKEFILE_LIST))")
$(info "当前文件所在绝对路径加文件名:$(realpath $(MAKEFILE_LIST))")
$(info "当前文件所在绝对路径:$(dir $(realpath $(MAKEFILE_LIST)))")
$(info "当前文件的最后一个文件所在绝对路径加文件名:$(realpath $(lastword $(MAKEFILE_LIST)))")
$(info "当前文件的最后一个文件所在绝对路径:$(dir $(realpath $(lastword $(MAKEFILE_LIST))))")

输出结果:

在这里插入图片描述


关于patsubst 用法:

加前缀:

$(patsubst %, _dir_%, $(SUBDIRS))在所有的名字前面加上_dir_

加前缀和后缀:

$(patsubst %,$(PREFIX)%$(SUFFIX),$(COMPILE_MODULES)) 在所有的名字前加$(PREFIX)并且在所有的名字后加$(SUFFIX)

正常使用方法:

$(patsubst %.c, %.o, $(wildcard *.c))  将文件名后缀为.c 的 替换为 .o
$(patsubst %/, %, $(dir $(mkfile_path)))  将字符串中后缀为 “/” 替换为空

Makefile不显示输出错误提示

-$(MAKE) -C .....

Makefile中的 = := ?= +=

可以参考博客

  • = :这个会综合全局情况
  • := :就是简单的等于,与我们平常的等号理解一样,当前赋值什么就是什么
  • ?= :没有定义过就赋值
  • += :在原来的基础上追加
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值