`

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

 
阅读更多
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/46860.html" frameborder="0" width="468" scrolling="no" height="60"></iframe>

在一般的推理规则下,把 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


分享到:
评论

相关推荐

    NMake参考手册,介绍NMake编译

    NMake是一个命令行工具,用于自动化编译和构建过程。它可以根据makefile文件中的规则和依赖关系来生成目标文件。NMake支持多种编译器和链接器,包括Microsoft Visual C++、Borland C++和GNU C++等。 描述:NMake...

    vs2015编译最新openssl-1.1.1 非命令行nmake 可轻松编译出动态链接库与静态链接库 包含完整项目配置文件 里面有详细项目说明 适合学习修改

    非网上命令行 nmake编译 一个解决方案,4个分项目 4各项目 各个项目下有具体说明 libcrypto项目 生成libcrypto.lib 第一个编译 libssl项目 生成libssl 需要上面的生成的libcrypto.lib 这两个项目修改项目属性为静态...

    NMAKE(用于编译文件)

    它是一个批处理工具,能够解析Makefile文件,根据其中的规则执行编译、链接和其他相关任务,帮助开发者高效地管理和更新项目。罗云斌的书籍中提到NMAKE,这可能是指他的编程或系统开发教程中的一部分,旨在教育读者...

    win32汇编程序设计工作环境用nmake文件下载

    1. **编写makefile**:首先,你需要创建一个`makefile`,在其中定义汇编器(如NASM或MASM)的路径、目标文件、源文件和编译规则。例如: ``` AS = nasm OBJ = main.obj EXE = main.exe all: $(EXE) $(EXE): ...

    jom 多核nmake 1.0.4

    标题 "jom 多核nmake 1.0.4" 提到的是一个针对Windows平台的构建工具,jom,它是一个优化版的nmake,旨在利用多核处理器的并行计算能力来加速编译过程。在现代计算机硬件中,多核处理器已经成为常态,jom就是为充分...

    nmake工具的使用

    一个 targets 可以有多个 dependents。command 也就是 NMake 需要执行的命令。其中 commands 可以是任意的 Windows 命令行命令。 4. 一个实际可以运行的 makefile 下面是一个实际可以运行的 makefile 实例: 假设...

    nmake 介绍文件

    1. **Makefile**:nmake工作的核心是Makefile,这是一个包含规则和指令的文本文件,定义了如何构建、链接和更新项目中的目标文件。Makefile通常包含了源代码文件、目标文件、依赖关系以及执行特定任务的命令。 2. *...

    Nmake相关的几个文档

    Nmake基于Makefile,一个包含编译规则和指令的文本文件,使得开发者能够方便地构建和管理复杂的项目。 在“Nmake相关的几个文档”中,我们可以期待学习以下关键知识点: 1. **Nmake基本概念**:Nmake的工作原理,...

    NMAKE GUIDE中英文双版本

    3. **清理目标**:通常,Makefile会定义一个`clean`目标,用于删除编译产生的临时文件,可以通过`nmake clean`来执行。 4. **错误处理**:当构建过程中出现错误,NMAKE会停止执行,并显示错误信息。 ### 三、NMAKE...

    make文件推理规则

    其中,推理规则是`make`工具的关键特性之一,它允许`make`根据目标文件的扩展名自动选择适当的构建命令,无需在`Makefile`中显式地列出每一个可能的构建步骤。 #### 运行NMAKE与推理规则 NMAKE是Microsoft提供的一...

    命令行模式的 VC6编译器

    使用Makefile,你可以更灵活地控制编译过程,包括依赖关系和编译规则。虽然VC6本身不直接支持Makefile,但你可以借助其他工具(如NMAKE)在命令行中使用。 总之,熟练掌握命令行模式下的VC6编译器,不仅可以提高...

    最基本的nmake 语法.pdf

    假设我们需要构建一个简单的C#项目,包含一个类库(`AutoBox`)和一个使用该类库的应用程序(`UseBox`),我们可以按照以下步骤创建Makefile文件: 1. 创建`AutoBox.cs`文件作为类库的源代码。 2. 创建`UseBox.cs`文件...

    win32汇编 nmake.exe

    nmake.exe是Microsoft的Visual C++开发环境的一部分,它是一个命令行构建工具,主要用于编译和链接C和C++项目,但也可以用于管理汇编语言项目。nmake基于Makefile文件,这是一个文本文件,其中包含了一组规则,指示...

    GNU libiconv-1.15和libintl-0.19.8.1,VS2017工程和 Makefile.mak 命令行编译文件

    GNU libiconv-1.15和libintl-0.19.8.1,VS2017工程和 Makefile.mak 命令行编译文件 CSDN-tags: libiconv1.15 libintl-0.19.8.1 VS2017 SDK17134.12 声明: 最新版,修正了relocatable.c文件中GetModuleFileName...

    vc 2010命令行版本

    4. **nmake.exe**: 一个基于Makefile的构建工具,适合那些熟悉Makefile语法的开发者,用于自动化构建过程。 5. **其他工具**: 包括lib.exe(库管理器)、dumpbin.exe(反汇编器)、editbin.exe(二进制文件编辑器)...

    GNU libiconv-1.15和libintl-0.19.8.1,VS2015工程和 Makefile 命令行编译文件

    GNU libiconv-1.15和libintl-0.19.8.1,VS2015工程和 Makefile 命令行编译文件 CSDN-tags: libiconv1.15 libintl 0.19.8.1 VS2015 Makefile 声明: 代码为本人良心制作,虽然花费了一定的时间和精力,但不保证...

    Nmake_Make.zip

    Nmake是Microsoft Visual Studio中的一个命令行工具,而Make则起源于Unix系统,现在也有跨平台的实现如Gnu Make。 ### Nmake Nmake(Microsoft Native Make)是微软为Windows操作系统开发的一个构建工具,它与...

    Win32汇编NMAKE工具

    在Windows操作系统中,NMAKE是Microsoft Visual C++开发环境中的一个命令行构建工具。NMAKE全称为“Microsoft Program Maintenance Utility”,它主要用于管理和执行构建过程,尤其是在C/C++编程中。NMAKE工具遵循...

    Windows环境下编译Opencpn

    - Cmake:一个跨平台的自动化构建工具,可以用来生成Visual Studio的项目文件。 - Gettext:用于本地化应用程序的工具集,它包含po编辑器用于编辑语言文件和一系列命令行工具。 - WxWidgets:一个开源的C++图形...

Global site tag (gtag.js) - Google Analytics