nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件

在一般的推理规则下,把 5 个 .cpp 文件编译为 5 个 .obj 文件需要调用 5 次 cl.exe,而 Microsoft nmake 支持 batch mode (批模式) 推理规则,只需调用一次 cl.exe 就能编译出这 5 个 .obj 文件,加快编译速度。

举例来说,有如下 Makefile:

# start of Makefile

all: foo1.obj foo2.obj foo3.obj foo4.obj

.cpp.obj:
    cl /nologo /c $<

# end of Makefile

那么执行 nmake 得到的输出是

Microsoft (R) Program Maintenance Utility Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

        cl /nologo /c foo1.cpp
foo1.cpp
        cl /nologo /c foo2.cpp
foo2.cpp
        cl /nologo /c foo3.cpp
foo3.cpp
        cl /nologo /c foo4.cpp
foo4.cpp

可见期间调用了 4 次 CL。如果把上述 Makefile 中的“.cpp.obj:”替换为“.cpp.obj::”,注意多了一个冒号,再调用 nmake 得到的输出是

Microsoft (R) Program Maintenance Utility Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

        cl /nologo /c foo1.cpp foo2.cpp foo3.cpp foo4.cpp
foo1.cpp
foo2.cpp
foo3.cpp
foo4.cpp
Generating Code...

可见这样一次就把 4 个文件都编译出来了。只要多加一个冒号,就能节省反复启动编译器的时间,加快编译速度。

在预定义的规则中,nmake 是开启批模式的,可以用命令行参数 /Y 来禁用它。

http://msdn2.microsoft.com/zh-cn/library/f2x0zs74(VS.80).aspx (批模式规则)

http://msdn2.microsoft.com/zh-cn/library/cx06ysxh(VS.80).aspx (预定义的规则)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值