nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件
2007-12-23 14:13
525 查看
在一般的推理规则下,把 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
举例来说,有如下 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
相关文章推荐
- nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件
- nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件
- nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件
- nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件
- nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件
- nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件
- nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件
- nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件
- nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件
- nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件
- nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件
- nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件
- nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件
- 用命令行模式编译运行带包名的java文件
- java第一课:java第一课:如何在命令行模式下编译运行带包的java文件
- 如何在命令行模式下编译运行带包的java文件
- 调用codeSmith API,l动态编译cst文件,生成exe文件可以在目前pc免安装codeSmith
- 将C++代码编译成Matlab可以调用的.mexw文件(涉及多个.cpp文件的编译)
- 用java调用编译器编译java文件-马士兵设计模式教程-动态代理 .
- 我写的一个Qt 显示二维码( QR Code)的控件(可以去掉对 libpthread 的依赖,而且编译出的库文件可以在 vc2010 的release 模式下使用)