$(shell pwd)和$(pwd)有什么区别

heytry4 2011-01-09 11:59:56
俺在一个Makefile中看到这样的语句$(shell pwd)
俺知道$(pwd)是执行pwd这条指令, 但不清楚$(shell pwd)中的shell有什么用,请高手帮忙.
...全文
26307 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenzhengnan 2012-08-16
  • 打赏
  • 举报
回复
非常感谢
dengqianyi 2012-04-26
  • 打赏
  • 举报
回复
学习了,非常感谢
zcf_tarena 2012-04-17
  • 打赏
  • 举报
回复
非常感谢
azhujudah 2011-08-01
  • 打赏
  • 举报
回复
非常感謝!!
knief不懂就问 2011-06-27
  • 打赏
  • 举报
回复
同感谢
heytry4 2011-01-10
  • 打赏
  • 举报
回复
非常感謝
bluejays 2011-01-10
  • 打赏
  • 举报
回复 1
这个shell应该是make里面的一个函数。
从著名的《跟我一起写 Makefile》里面找到这么一段:

八、shell函数
shell函数也不像其它的函数。顾名思义,它的参数应该就是操作系统Shell的命令。它和反引号“`”是相同的功能。这就是说,shell函数把执行操作系统命令后的输出作为函数返回。于是,我们可以用操作系统命令以及字符串处理命令awk,sed等等命令来生成一个变量,如:
contents := $(shell cat foo)
files := $(shell echo *.c)
注意,这个函数会新生成一个Shell程序来执行命令,所以你要注意其运行性能,如果你的Makefile中有一些比较复杂的规则,并大量使用了这个函数,那么对于你的系统性能是有害的。特别是Makefile的隐晦的规则可能会让你的shell函数执行的次数比你想像的多得多。
bluejays 2011-01-10
  • 打赏
  • 举报
回复
Makefile里面好像必须加shell,直接用$(pwd)好象不行。
我刚才试了一下,把这几行保存成Makefile,然后make可以看到结果
P=$(shell pwd) # 这样可以输出路径
#P=$(pwd) # 这样没有输出
all:
echo $P
相关推荐
发帖
Linux/Unix社区

2.2w+

社区成员

Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
帖子事件
创建了帖子
2011-01-09 11:59
社区公告
暂无公告