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

来源:互联网 发布:nginx反向代理配置 编辑:程序博客网 时间:2024/05/22 13:51

在一般的推理规则下,把 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 (预定义的规则)



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1543250


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大学混了四年怎么办 和家人相处很累怎么办 40多岁眼睛花怎么办 侧方停车右边宽怎么办 有公主病的老婆怎么办? 圆通快递太慢了怎么办 美台军舰互停怎么办 安装包删除不掉怎么办 艾灸后皮肤极痒怎么办 拔罐如果有水泡怎么办 拔罐拔出水泡来怎么办 拔罐拔出了水泡怎么办 风湿引起的背疼怎么办 拔罐减肥不瘦怎么办 艾灸后脸上长痘怎么办 艾灸烟大怎么办 湿毛巾 月经推迟一个月了还不来怎么办 埋线了喝酒了怎么办 对待孩子脾气暴燥怎么办 买的新鞋子臭脚怎么办 鞋子臭脚怎么办如何除 惠普803墨盒干了怎么办 酷派手机无命令怎么办 华为手机锁机了怎么办 小孩被蜘蛛咬了怎么办 我是一个不爱说话的人怎么办 光动能手表停了怎么办 电波表收不到波怎么办 吃了壮阳药头疼怎么办 吃了伟哥后头痛怎么办 伟哥吃了不管用怎么办 钱站的钱还不起怎么办 面试工资要低了怎么办 线切割环保来查怎么办 喝白酒咽不下去怎么办 翠佛堂的玉假了怎么办 300英雄账号忘了怎么办 买了假酒不承认怎么办 买到假酒不承认怎么办 喝假酒胃里难受怎么办 怀孕初期塞药了怎么办