Makefile 里的realpath 函数的探究
首先看一下 GUN 官网的解释:
$(realpath names…)
For each file name in names return the canonical absolute name. A canonical name does not contain any . or .. components, nor any repeated path separators (/) or symlinks.
In case of a failure the empty string is returned. Consult the realpath(3) documentation for a list of possible failure causes.
大致的意思为:
对于名称中的每个文件名返回规范绝对名称。规范名称不包含任何.或..成分,也没有任何重复的路径分隔符(/)或符号链接。
万一发生空字符串返回的问题。请参考realpath(3)文档的可能的失败原因的列表。
所以说,这个函数就是放回一个绝对的文件地址。
我们来测试它一下:
首先我在 home/jin/jin/make2这个目录里添加了一个很简单的Makefile文件
jin:
@echo $(realpath ./)
运行的结果如下:
可以看出它放回了真实绝对的一个路径
这个操作和使用 shell pwd 操作是一致的(如下):
jin:
@echo $(realpath ./)
@echo $(shell pwd)
shell pwd 可以实现realpath 的功能。但是在某些场合下,你就不得不使用 realpath了
include ../make2/jia.mk
jin:
@echo $(MAKEFILE_LIST);
@echo $(lastword $(MAKEFILE_LIST));
@echo $(dir $(lastword $(MAKEFILE_LIST)));
@echo $(realpath $(dir $(lastword $(MAKEFILE_LIST))));
@echo $(shell pwd);1234567
可以看一下运行结果:
2015/5/10 补充:
在一些场合下可以看的到使用了 realpath 和 abspath 函数这里做一下简单的对比:
只有这个目录存在 realpath 就会返回目录的绝对路径,不会包含 ./ ../ 这些字符。当目录不存在的时候realpath 返回为空。
而abspath则不同,不管这个文件夹是否存在,都会显示这个目录的绝对路径
总结:makefile 里的realpath是放回文件的绝对地址,某些场合下可以使用$(shell pwd) 来替代
————————————————
原文链接:https://blog.csdn.net/u012811546/article/details/45541937
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
中东半导体,未来很刺眼
GaN市场,蓄势待发
不一样的展会,不一样的精彩!湾芯展邀您10月深圳共襄盛举
首款2nm SRAM,为AI数据中心带来什么?
瑞萨单片机技术概述
使用单时基电路NE555构成的电平测试电路
使用电压比较器LM324组成的电平测试电路
通过点亮小数点dp指示开路(未测试)状态的电平测试电路
求教:编译blob的问题
TPU突围,谷歌积极推销自研芯片
一种新型三端稳压器件-TL431
汉字双排LCD驱动
瑞萨电子模拟器件技术讲座
通过电阻Rl~R4设置不同的高、低电子检测阈值的电平检测电路
用P87LPC76X 代换XXC2051 的方法
用TC9148遥控MCS-51单片机电路
安森美将在PCIM Asia 2025展示前沿电源创新技术
请教各位大侠 2410 USB 鼠标驱动问题
用 VIM编写 C/C++程序
Other World Computing(OWC)推出Thunderbolt 5 Dual 10GbE Network Dock
无需钳位电路实现动态导通电阻RDS(on)的测量技术
windows下tornado中怎么使用POSIX
使用TTL或非门接成反相器配用共阴极数码管构成的电平测试电路
瑞萨16位单片机讲座
2009大赛B题MMC-1模块介绍
《用LM324制作抢答器》的改进
Vishay推出一类瓷介径向引线高压直插瓷片电容
Easy MCU Easy RF
如何在2410系统下挂接IDE硬盘
Credo发布为AI网络打造的Bluebird 1.6T光DSP芯片