NMAKE makefile内容和功能(1):描述块

更多参见:NMAKE makefile内容和功能
描述块构成makefile的核心。它们描述了要创建的目标或文件,以及它们的依赖关系,以及创建目标所需的文件。描述块可以包括描述如何从依赖项创建目标的命令。描述块是一个依赖项行,可以选择后跟一个命令块:

targets... : dependents...
    commands...

依赖行

依赖项行指定一个或多个目标,以及零个或多个依赖项。如果目标不存在,或者其时间戳早于依赖项,则NMAKE将执行命令块中的命令。如果目标是伪目标,NMAKE还会执行命令块。下面是一个依赖关系行示例:

hi_bye.exe : hello.obj goodbye.obj helper.lib

在此依赖项行中,hi_bye.exe是目标。它的依赖项是hello.obj、goodbye.obj和helper.lib。当hello.obj、goodbyee.obj或helper.lib的更改时间比hi_bye.exe的更改时间更早时,依赖项行告诉NMAKE构建目标。

目标必须位于行的开头。它不能用空格或制表符缩进。使用冒号(:)将目标与从属项分开。目标、冒号分隔符(:)和从属项之间允许使用空格或制表符。要拆分依赖项行,请在目标或依赖项后使用反斜杠(\)。

在执行命令块之前,NMAKE扫描所有依赖项和任何适用的推理规则,以构建依赖项关系树。依赖项关系树指定完全更新目标所需的步骤。NMAKE递归检查依赖项本身是否是另一个依赖项列表中的目标。在构建依赖关系树之后,NMAKE检查时间戳。如果树中的任何依赖项比目标新,NMAKE将构建目标。

目标

依赖项行的目标部分指定一个或多个目标。目标可以是任何有效的文件名、目录名或伪目标。使用一个或多个空格或制表符分隔多个目标。目标不区分大小写。目标可以是具有文件名的路径。目标及其路径不能超过256个字符。如果冒号前面的目标是单个字符,请使用分隔空格。否则,NMAKE将字母冒号组合解释为驱动器说明符。

多个目标

NMAKE在单个依赖项中计算多个目标,就像在单独的描述块中指定每个目标一样。
例如,此规则:

bounce.exe leap.exe : jump.obj
   echo Building...

评估结果如下:

bounce.exe : jump.obj
   echo Building...

leap.exe : jump.obj
   echo Building...
累积相关性

如果目标重复,则依赖项在描述块中是累积的。
比如这套规则,,

bounce.exe : jump.obj
bounce.exe : up.obj
   echo Building bounce.exe...

评估结果如下:

bounce.exe : jump.obj up.obj
   echo Building bounce.exe...

当在单个描述块中的多个依赖关系行中有多个目标时,NMAKE将对其进行求值,就像在单独的描述块中指定了每个目标一样。但是,只有最后一个依赖关系行中的目标才使用命令块。NMAKE尝试对其他目标使用推理规则。
比如这套规则,,

leap.exe bounce.exe : jump.obj
bounce.exe climb.exe : up.obj
   echo Building bounce.exe...

评估结果如下:

leap.exe : jump.obj
# invokes an inference rule调用推理规则

bounce.exe : jump.obj up.obj
   echo Building bounce.exe...

climb.exe : up.obj
   echo Building bounce.exe...
同时出现在多个描述块中的目标

要使用不同的命令更新同时出现在多个描述块中的目标,请在目标和从属项之间指定两个连续的冒号(::)。

target.lib :: one.asm two.asm three.asm
    ml one.asm two.asm three.asm
    lib target one.obj two.obj three.obj
target.lib :: four.c five.c
    cl /c four.c five.c
    lib target four.obj five.obj
依赖性副作用
伪目标

依赖项

推断依赖项
搜索依赖项的路径
目录搜索路径示例

参考文献

Description blocks

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haimianjie2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值