命令解释
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)