Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2349341
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: LINUX

2010-09-10 19:21:59

Makefile 可能会以这样的方式被调用:
make -f some_dir/Makefile all

这种情况下, Makefile本身里面的命令不能对当前目录作出假设.
GNU make手册里介绍了一个叫
MAKEFILE_LIST的变量, 它是个列表变量, 在每次make读入一个make文件时, 都把它添加到最后一项, 这样:

在Makefile的最开头, 通过访问这个变量的最后一个元素, 就能得到读入的文件名, 对于上面的例子, 是
some_dir/Makefile


pes_parent_dir:=$(shell pwd)/$(lastword $(MAKEFILE_LIST))
pes_parent_dir:=$(shell dirname $(pes_parent_dir))
pes_parent_dir:=$(shell dirname $(pes_parent_dir))

第一行将得到一个完整路径名.
第二行通过命令dirname 去掉 Makefile部分.
第三行得到其父目录.

这个办法只对GNU Make有用.
阅读(5486) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~