Makefile 中获取自身目录(pwd, lastword,dirname)

本文探讨了Makefile中如何整合Shell命令,包括利用shell函数调用外部命令、宏定义的使用、变量处理技巧,以及如何通过Makefile_LIST和lastword函数获取当前makefile的父目录名称。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

命令解释

shell pwd

make_dir:=$(shell pwd) // := 的意思是将$(shell pwd) 表示为make_dir,类似于宏定义
make_dir2:=$(pwd) 

all:
	@echo $(make_dir)  //有输出
	@echo $(make_dir2) //无输出

lastword && MAKEFILE_LIST
MAKEFILE_LIST的变量, 它是个列表变量, 在每次make读入一个make文件时, 都把它添加到最后一项,gnu make 有效。
lastword 返回names中的最后一个字符串,names以空格进行分隔 $(lastword foo bar lose) 返回 lose

parent_dir_fname:=$(shell pwd)/$(lastword $(MAKEFILE_LIST))

all:
	@echo $(parent_dir_fname)

在这里插入图片描述
dirname
dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容。dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其他部分,并写结果到标准输出。如果最后一个/后无字符,dirname 命令使用倒数第二个/,并忽略其后的所有字符。dirname 和 basename 通常在 shell 内部命令替换使用,以指定一个与指定输入文件名略有差异的输出文件名。
https://man.linuxde.net/dirname

dir2:=$(shell pwd)/$(lastword $(MAKEFILE_LIST))
name:=$(lastword $(MAKEFILE_LIST))
dir=$(shell dirname $(dir2))

all:
    @echo $(dir)
    @echo $(dir2)
    @echo $(name)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值