您的位置:首页 > 其它

MAKEFILE简明指南(七)(转)

2010-11-23 16:35 162 查看
MAKEFILE简明指南(七)
2010/06/08 14:55
文件名宏

在commands block中使用,以表示特定的文件名,包括:

1) $@ 用来表示相关联的dependent line中第一个target的全名(包括路径)。

2) $$@ 同上,但只能用在dependent line中。

3) $* target的路径加基本名。

4) $** 相应的dependent line中的所有dependent。

5) $? 相应的dependent line中的所有time stamp大于target的dependent。

6) $< 同上,但只能用在IR中。

下面是一个例子:

DIR = c:\objects

$(DIR)\a.obj : a.obj

COPY a.obj $@

最后一句展开来就相当于:copy a.obj c:\objects\a.obj

另外,在使用以上这些宏的时候,还可以通过以下的字符来提取文件名中的某一个部分:

D 路径

B 基本名

F 基本名加扩展名

R 路径加基本名

例如:如果$@表示c:\objects\a.object,则

$(@D) c:\objects

$(@B) a

$(@F) a.obj

$(@R) c:\objects\a

递归宏

有3个,它们都是用来在makefile中方便地进行NMAKE的递归调用,它们分别是:

1) MAKE

表示运行当前makefile的NMAKE程序的名字。例如,如果你在控制台用以下语句运行makefile:

NMAKE her.mak

则MAKE就等于NMAKE。

但如果你将NMAKE.EXE改名为FUCK.EXE,那么你运行makefile的命令就应该改为:

FUCK her.mak

此时,MAKE就等于FUCK。

2) MAKEDIR

表示你调用NMAKE时所在的目录。

3) MAKEFLAGS

表示你运行当前makefile时使用的NMAKE参数。

这几个宏在build程序的不同版本时特别有用,例如:

all : vers1 vers2

vers1 :

cd \vers1

$(MAKE)

cd ..

vers2 :

cd \vers2

$(MAKE) /F vers2.mak

cd ..

NMAKE会分别在.\vers1和.\vers2目录下运行vers1.mak和vers2.mak。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: