NMAKE参考之三——Makefile的内容

Makefile的内容

Makefile文件包括描述块(description block)、宏定义(micros)、推导规则(inference rules)、和指令(directives)。本节描述了Makefile的一般写法,剩下的章节详细描述了Makefile中每个元素。

特殊字符

NMAKE的特殊字符包括:

: ; # ( ) $ ^ \ { } ! @ —

若要将 NMAKE 特殊字符用作文字字符,请在它前面添一插入符号 (^)。NMAKE会忽略在特殊字符之前插入的脱字符(^)。引号引起来的字符串内的脱字符 (^) 被视为一个脱字符。

你也可以在一行的末尾使用脱字符(^),它的作用是向一个宏定义中插入一个换行符。这样NMAKE会将换行符也解释为宏定义的一部分,而不是一个宏的结束。注意,这与使用反斜杠(\)来继续宏定义行是不一样的,反斜杠会将换行符替换成为一个空格。更多细节可以参考“宏和 NMAKE”一节。

在命令中,用%表示一个文件说明的开始。NMAKE将“%s”解释为一个文件名,同时它也会在“%|”后跟随字符"d",”e", “f", ”p“ 或是"F"字符串当作是部分或完整的文件或路径名。如果要使用在命令中使用这些字符,请使用双百分号(%%)来替代单一百分号(%)。其它情况下NMAKE将"%"字符当作普通文字字符来处理。不过,NMAKE总是将双百分号%%解释成一个百分号字符,所以如果想要使用%%,你可以使用三个百分号%%%或四个百分号%%%%来表示。

若要将美元符号 ($) 用作命令中的文字字符,请指定两个美元符号 ($$)。此方法可以代替 ^$ 使用。

通配符

你可以使用MS-DOS的通配符(*和?)来指定目标和依赖的名字。NMAKE会展开依赖行上的通配符,但是命令中的通配符不会被展开。

示例

在下面的描述块中,通配符“*”使用了两次。

    project.exe : *.asm
    ml *.asm /Feproject.exe

NMAKE将会在当前目录中查找所有以.asm为后缀名的文件并展开其在依赖行上。如果其中任意的.asm文件过期了,ML命令将会展开*.c同时编译和链接所有的文件。

注释

如果要Mafefile中添加注释,需要在注释之前加入#号。如果整行都是注释,那么#必须出现在该行的开始位置,否则#以后的内容将会当做注释。NMAKE会忽略#号到下个换行符之间的文本内容。

命令行中不能包含注释,即使命令是作为依赖项或是推导规则也不例外。这是因为NMAKE并不解析命令,它而是把整个命令都交给给操作系统。不过,注释可以出现在命令块的行之间。

如果想要注释掉一个命令,那么在该命令行的开始插入#。

您可以在下列情形中使用注释:

# Comment on line by itself

OPTIONS = /MAP # Comment on macro definition line

all.exe : one.obj two.obj # Comment on dependency line
    link one.obj two.obj;
# Comment in commands block
    copy *.obj \objects

.obj.exe : # Comment in inference rule

想要描述一个文字#字符,在其前面插入^符号,就像下面一样:

DEF = ^#define #Marcro representing a C preprocessing directive

TOOLS.INI文件中也可以使用注释。另外TOOLS.INI允许另一种方式来添加注释,那就是使用;字符。

长文件名

如果文件系统支持的话,你可以在Makefile文件中使用长文件名。但是必须将文件包含在一对双引号中,就像下面的依赖行的写法:

all : "VeryLongFileName.exe"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值