运行NMAKE

你可以使用下面的语法运行NMAKE:

NMAKE [options] [macros] [targets]

  • option字段列出NMAKE选项,NMAKE选项会在本文的“命令行选项”部分进行详细介绍。
  • micros字段列出宏定义,它允许你定义字符串并在makefile中使用,后文“用户自定义宏”会有详细描述。
  • targets列出需要生成的目标文件。NMAKE会生成命令行参数中目标字段的目标文件。如果你没有指定任何目标,NMAKE默认生成makefile文件中第一个依赖的第一个目标。(你可以使用伪目标让NMAKE来生成多个目标文件。详细请参阅后文”伪目标“一节。)

NMAKE使用如下优先级去管理编译过程。

  1. 如果使用了/F选项,NMAKE于当前目录或指定目录搜索指定的makefile文件,如果makefile文件不存在,那么NMAKE暂停并显示错误信息。
  2. 如果没有使用/F选项,NMAKE于当前目录搜索一个名叫MAKEFILE的文件作为makefile文件。
  3. 如果在当前目录并不存在名为MAKEFILE的文件,NMAKE检查命令行中的目标文件并尝试使用(预定义的或是定义在TOOLS.INI文件中的)推导规则去生成目标文件。这一特性使得无须makefile,NMAKE也能依靠合适的目标推导规则完成编译。
  4. 如果没有找到makefile文件、命令行参数中也没有指定目标,那么NMAKE会暂停并显示错误信息。

示例

下面这条命令指定了/S选项和一个宏定义(”program=sample"),让NMAKE生成两个目标文件(sort.exe和search.exe)。该命令并使用makefile,所以NMAKE在当前目录查找MAKEFILE文件或是使用默认推导规则。NMAKE /S "program=sample" sort.exe search.exe

NMAKE 选项

下表描述了NMAKE选项。选项前有斜杠 (/) 或短划线 (-),并且不区分大小写。使用!CMDSWITCHES更改生成文件或Tools.ini中的选项设置。

/A

强制生成所有已评估的目标,即使这些目标相对于依赖项未过期。不强制不相关目标的生成。

/B

即使时间戳相等,也强制生成。建议只用于非常快的系统(解析为两秒或小于两秒)。

/C

取消默认输出,包括非致命的 NMAKE 错误或警告、时间戳以及 NMAKE 版权信息。取消 /K 选项发出的警告。

/D

当目标不存在时,显示每个已评估的目标、依赖项和消息的时间戳。与 /P 选项一起用于调试生成文件。使用 !CMDSWITCHES 设置或清除部分生成文件的 /D 选项。

/E

使环境变量重写生成文件宏定义。

/ERRORREPORT[NONE | PROMPT | QUEUE | SEND ]

如果 nmake.exe 在运行时失败,则可以使用 /ERRORREPORT 将有关这些内部错误的信息发送给 Microsoft。有关 /ERRORREPORT 的更多信息,请参见/errorReport(报告内部编译器错误)。

/F filename

将 filename 指定为生成文件。空格或制表符可以位于 filename 的前面。为每个生成文件指定一次 /F 选项。若要从标准输入提供生成文件,请为 filename 指定短划线 (-),并按 F6 或 Ctrl+Z 结束键盘输入。

/G

显示 !INCLUDE 指令中包含的生成文件。有关更多信息,请参见生成文件预处理指令。

/HELP, /?

显示 NMAKE 命令行语法的简短摘要。

/I

忽略所有命令的退出代码。若要设置或清除部分生成文件的 /I 选项,请使用 !CMDSWITCHES。若要忽略部分生成文件的退出代码,请使用短划线 (-) 命令修饰符或 .IGNORE。如果两者都指定了,则重写 /K 选项。

/K

如果命令返回错误,则继续生成不相关的依赖项。同时发出警告并返回退出代码 1。默认情况下,如果有任一命令返回非零退出代码,NMAKE 将暂停。来自 /K 选项的警告被 /C 选项取消;如果两者都指定了,则 /I 选项重写 /K 选项。

/N

显示但不执行命令;执行预处理命令。不在递归 NMAKE 调用中显示命令。对于调试生成文件和检查时间戳很有用。若要设置或清除部分生成文件的 /N 选项,请使用 !CMDSWITCHES。

/NOLOGO

取消 NMAKE 版权消息。

/P

显示标准输出的信息(宏定义、推理规则、目标、.SUFFIXES 列表),然后运行生成。如果不存在任何生成文件和命令行目标,则只显示信息。与 /D 选项一起用于调试生成文件。

/Q

检查目标的时间戳;不运行生成。如果所有目标都是最新的,则返回零退出代码;如果有任何目标不是最新的,则返回非零退出代码。执行预处理命令。从批处理文件运行 NMAKE 时很有用。

/R

清除 .SUFFIXES 列表并忽略在 Tools.ini 文件中定义的,或预定义的推理规则和宏。

/S

取消已执行命令的显示。若要取消部分生成文件中的显示,请使用 @ 命令修饰符或 .SILENT。若要设置或清除部分生成文件的 /S 选项,请使用 !CMDSWITCHES。

/T

更新命令行目标(或第一个生成文件目标)的时间戳并执行预处理命令,但不运行生成。

/U

必须与 /N 选项一起使用。转储内联 NMAKE 文件,以便 /N 输出可用作批处理文件。

/X filename

将 NMAKE 错误输出发送到 filename 而不是标准错误。空格或制表符可以位于 filename 的前面。若要将错误输出发送到标准输出,请为 filename 指定短划线 (-)。不影响从命令到标准错误的输出。

/Y

禁用批模式推理规则。选定该选项后,所有批模式推理规则被视为常规推理规则。

示例

下面的命令行指定了两个NMAKE选择项:NMAKE /F sample.mak /c targ1 targ2

  • /F选择项告诉NMAKE去读取sample.mak文件
  • /C选择项告诉NMAKE不要打印非致命的错误和警告信息。
  • 该命令指定了两个目标文件。

NMAKE 命令文件

您可以将一组命令行参数保存在一个文本文件中,并将该文件名作为参数传递给NMAKE。NMAKE打开命令文件,读取文件中的命令作为命令行参数。你可以使用命令文件的方式绕开操作系统对于命令行参数长度的限制(MS-DOS中是128个字符)。

要想使用命令文件作为NMAKE的参数输入,只需输入:

NMAKE @commandfilecommandfile是命令文件的文件名,命令文件中包括NMAKE的命令行参数的信息。在输入命令时在命令文件名之前加个@字符。当然,你也可以使用完整的文件路径。

NMAKE将命令文件当成是单独的一个参数来处理。它把命令文件换行符替换成空格。宏定义中若有包含空格的须写在一对双引号中,详情请查阅后文中“如何定义宏定义”。

可以将@commandfile放置于命令行中任意位置。其他参数可以放在命令文件之前或是之后。当然,可以指定多个命令文件。

示例1

如果一个名为UPDATE的文件中包含这么一行内容:/S "program=sample" sort.exe search.exe

你可如下方式执行NMAKE程序:NMAKE @update

上面语句的作用就相当于在命令行中输入如下的命令:NMAKE /S "program=sample" sort.exe search.exe

示例2

下面将update文件修改为:

/S "program \
= samplet" sort.exe search.exe

使用(\)可以将上面的定义写在两行中。

示例3

如果命令文件update的内容如下:

/S "program=sample" sort.exe

您可使用按下面的方式启动NMAKE来生成目标search.exe:

NMAKE @update search.exe

TOOLS.INI配置文件

你可以通过在编辑初始化文件TOOLS.INI来订制你的NMAKE。NMAKE的设置必须以标签[NMAKE]开始。该标签不区分大小写。标签段内的文件内容可以包括任何makefile信息。NMAKE将会在其运行的每个会话过程使用INI中的设置,除非你在NMAKE中使用/R选项。NMAKE首先在当前目录搜索TOOLS.INI文件,其次在环境变量INIT指定的路径中进行搜索。

你可以TOOLS.INI文件中使用!CMDSWITCHES指令来指定命令行选项。就像环境变量一样,采用这种方式设置的命令行选项将会在每个NMAKE的会话期间都会起作用。

在TOOLS.INI中出现的宏定义和推导规则可以被覆盖。详情请查阅后文的“宏定义的优先性”一节和“推导规则的优先性”章节。

NMAKE会在其读取makefile文件之前处理TOOLS.INI文件在的内容。例如,在TOOLS.INI出现的描述块将会被作为makefile的第一个出现的描述块来处理,这同样适用于NMAKE的每个会话过程,除非/R选项被指定。

TOOLS.INI文件中的注释总是以“;”开始,“;”后面的内容将会被作为注释。当然您也可以使用makefile文件中注释的方式,也就是以"#"作为一行的开始。

TOOLS.INI例子

下面是一个TOOLS.INI的例子:

[NMAKE]
; macros
AS = masm
AFLAGS = /FR /LA /ML /MX /W2
; inference rule
.asm.obj:
$(AS) /ZD ZI $(AFLAGS) $.asm

NMAKE读取并使用[NMAKE]标签以下的内容。在本例中,重新定义了AS宏来关联微软的宏汇编器功能(MASM.EXE);重新定义了AFLAGS宏,并重新定义了由.asm源文件到.obj文件的推导规则。这些NMAKE的功能将会在后文中有详细的介绍。

NMAKE参考之二——运行NMAKE相关推荐

  1. 高通驱动开发参考(二)

    第1章 Driver相关模块介绍 1.1 REX简介 虽说目前QSC60x5平台上采用L4操作系统,REX只是L4上面的一个Task.但高通为了开发的兼容性,提供的API仍然采用老的一套接口(可能内部 ...

  2. SpringSide实战(二)----运行SpringSide项目并导入到Eclipse中

    一.下载源码 去以下地址下载SpringSide4的源码: https://github.com/springside/springside4/releases 或者去下载我上传到CSDN的: htt ...

  3. Spring Boot 参考指南(运行你的应用程序)

    19. 运行你的应用程序 将你的应用程序打包为jar并使用嵌入式HTTP服务器的最大优点之一是,你可以像对待其他应用程序一样运行应用程序,调试Spring Boot应用程序也很简单,你不需要任何特殊的 ...

  4. 让大家都成为电脑高手之二------运行_r篇

    现在把我收集一些比较常用的"运行命令"给大家一起分享参考. 按"开始"-"运行",或按WIN键 + R ,在『运行』窗口中输入:  (按英文 ...

  5. AVS2参考软件的运行

    博主最近在接触学习AVS2的代码,在查找资料的时候发现关于AVS2的资料少之又少,光是将这个代码运行起来博主也是踏了一些坑,其实遇到的问题都是很简单的,只不过下载下来的代码并没有使用手册,一切都是自己 ...

  6. DA14580软件开发平台参考(二)

    翻译的是这个文档. 它介绍了整个系统架构,组件,应用程序编程接口(API)以及开发工具链,环境和过程. 问题点请在评论中留言,我看到了回去改正. 继续上篇, 4 DA1458x Software Pl ...

  7. DSOframer 的主要事件参考(二)

    重要说明:本博已迁移到 石佳劼的博客!!! 不了解DSOframer的朋友,可以先参考<DSOframer 的简单介绍和资源整理>. 不了解DSOframer事件的朋友,可以先参考< ...

  8. JVM(七) -- 内存与垃圾回收(二) -- 运行时数据区(四) -- Java堆

    运行时数据区最重要的内容,对应书中2.2.4节.3.8节. 位置: 1. 概述 一个java进程对应一个jvm虚拟机,也对应一个堆空间 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域 ...

  9. .net core i上 K8S(二)运行简单.netcore程序

    上一章我们搭建了k8s集群,这一章我们开始在k8s集群上运行.netcore程序 1.kubectl run 在我的Docker系列教程里,我曾往docker hub中推送过一个镜像"web ...

最新文章

  1. 【Linux实用技术】LFS6.3构建实录
  2. TED+成长性思维+Carol Deweck+The Power of Yet
  3. java 线性计算_计算线性指数Tensorflow
  4. GS01创建信息集及其他GROUP在ABAP程序中的调用方法
  5. python求和_Python程序查找特殊求和系列的解决方案
  6. Java中的13个原子操作类介绍
  7. 蓝桥杯 BASIC-8 基础练习 回文数
  8. 南瑞科技服务器型号,南瑞--NSC通讯概述
  9. 计算机两个硬盘的作用,固态硬盘时代谈谈双硬盘(固态+机械硬盘)的好处
  10. 网页怎么退出全屏,网页退出全屏有哪些快捷键?
  11. 连续两次入围Gartner魔力象限的Quick BI到底有何魔力?
  12. 马斯克推荐加密通讯聊天软件Signalv5.13.8跨平台国际版几何管家出品
  13. [024] 11大Java开源中文分词器的使用方法和分词效果对比
  14. 计算机取证的相关案例,计算机取证实验报告(共9篇).doc
  15. RxJS——创建数据流
  16. (转)通用权限管理设计 之 数据库结构设计
  17. 现代信号分析与处理简答题期末总结BISTU
  18. CMMI中英文术语对照表
  19. 【UE4 第一人称射击游戏】05-设置角色动画
  20. Kylin多维分析引擎(一):Kylin概述

热门文章

  1. 涉密计算机打印机共享案例分析,案例教程|兼收并蓄,有线打印机无线共享实战...
  2. windows分类及安装
  3. 电商企业营销案例方案:2019年618大促用红包推广引流
  4. 因果系列文章(1):因果推断及相关论文
  5. 主语从句、宾语从句、表语从句、同位语从句
  6. 【考研英语-基础-长难句分析】特殊结构_分裂结构【插入式_同位语 插入语 状从 非限定从-从句后移式】
  7. 学习英文-学以致用【场景:程序员英文-开发环境】
  8. 2021年,我推荐你学习的编程语言,各类语言横向对比
  9. 私有化完成 360回归A股还有哪些障碍?
  10. [附案例]如何运营私域流量,提升用户终身价值,降低整体获客成本?