1、命令行中调用nmake的基本语法:

namke /f  makefile /x stderrfile  [macrodefs] [targets]

其中makefile为makefile文件,/x stderrfile为可选参数,即把nmake错误存储到文件stderrfile。

2、makefile的主要语法:

2.1 注释

makefile的注释以#开头,如:

# Usage: NMAKE CLEAN (removes all intermediary files)
      # or: NMAKE options (builds one library variant (see below))

2.2 宏

Makefile的一个重要组成部分是宏。Makefile中的宏和C语言的中宏类似,其实质就是字符串替换。其语法很简单,如下:

macro name =  macro value

直译就是宏名 =  宏的值

VS预定义了很多宏,如OUTDIR,你可以在你的Makefile重新定义这些宏以覆盖原来的值。

宏可以使用环境变量,如你的系统有一个OPEN_SOURCE的环境变量,然后你可以这样定义宏:

THIRD_PARTY  =  $(OPEN_SOURCE)

宏的引用用法是 $(宏名)。

2.3 预处理指令

Makefile的预处理指令和C语言的预处理指令类似,其常用指令如下:

!ERROR string      ——    显示错误“string”, 然后停止执行,错误代码为U1050

!MESSAGE string  ——   显示字符串,这个一般用于信息显示C语言的#pragma message

!INCLUDE [<]filename[>] —— 包含makefile。

!IF const ——  如果成立(非零),则处理!F和下一个!ELSE或!ENDIF之间的语句

还有诸如!IFDEF macroname、!IFNDEF macroname、!ELSE、!ELSEIF、!ELSEIFDEF、!ELSEIFNDEF、!ENDIF和C语言的#if之类的指令的意义是一致的.

2.4 描述块

基本语法:

目标:依赖项

  命令

3、示例

新建名为ConsoleTest的控制台程序,在ConsoleTest目录下新建名为ConsoleTest.vc的文件,用记事本输入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
all: ConsoleTest.exe
# compile
stdafx.obj: stdafx.cpp
    cl -c -D_X86=1 -DWIN32 -D_DEBUG -D_CONSOLE -Istdafx.h stdafx.cpp
ConsoleTest.obj: ConsoleTest.cpp stdafx.obj
    cl -c -D_X86=1 -DWIN32 -D_DEBUG -D_CONSOLE -Istdafx.h ConsoleTest.cpp
# link
ConsoleTest.exe: ConsoleTest.obj
    link /INCREMENTAL:YES /NOLOGO /subsystem:console /out:ConsoleTest.exe ConsoleTest.obj kernel32.lib
clean:
    @-if exist *.obj del *.obj

  cl和link简述:

cl的一些常用选项:

-c: 编译但不链接

-D: 定义预处理器,如-D_X86=1:指定在x86平台上编译,-D_DEBUG:定义预处理器_DEBUG,

-I:包含的头文件

cl的最后一个参数是所编译的文件。

link的一些常用选项:

/INCREMENTAL:是否启用增量链接,YES为启用,NO为不启用,

/NOLOGO: 取消显示启动版权标志

/SUBSYSTEM:指定子系统,在PC桌面程序上一般是两个选项:console(控制台程序)和WINDOWS(非控制台程序)。

/out: 指定输出的文件。

link最后的参数是需要链接的obj文件和库文件。

clean下面的@-if指令可以这么写:-if,其运行结果是一样的,但是有命令的回显。另外直接写成:if,也可以执行。

转载于:https://www.cnblogs.com/wuyuans/p/4320104.html

(转)nmake学习笔记相关推荐

  1. QT学习之路2 学习笔记

    QT学习之路2 学习笔记 1.Qt 是一个著名的 C++ 应用程序框架.你并不能说它只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件.使用 Qt,在一定程度上你获得的是一个&quo ...

  2. 学习笔记:Linux入门到进阶

    文章目录 前言 入门篇 一.常见的指令以及权限的理解 1. 初始Linux: 2.Linux下的基本指令 2.1 用户的创建和删除: 2.2 ls指令 2.3 pwd指令 2.4 cd指令 2.5 t ...

  3. [转]Windows平台下Makefile学习笔记

    Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...

  4. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  5. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  6. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  7. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  8. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  9. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

最新文章

  1. spring cloud 集成consul
  2. VNC 远程控制工具软件
  3. Java编码手册之华山版小精华
  4. 天津计算机本科学校有哪些专业吗,天津哪些大学有人工智能专业
  5. 关于TTThumbsViewController加载更多
  6. 查询分析300万笔记录_MySQL之慢查询日志
  7. 从电视主播到高考,人工智能还能干些什么
  8. 从源码分析ArrayList集合
  9. python海龟画图(6)多边形(3)圆内接多边形
  10. 超级表格企业版,最实用的三个功能
  11. oracle function
  12. 百度小米滴滴躬身入局,新能源造车如此多娇,引无数大厂竟折腰?
  13. C语言在一个数组中查找一个数字
  14. 一个霸占程序员休息时间的 APP
  15. 使用lua配置neovim所需的一切
  16. VS code常用插件
  17. 考研计算机300分什么水平,工科类考研300分什么概念?算不算高?
  18. yolov5训练自己的数据集并计算mAP
  19. Guice笔记_补充
  20. 用 Gnuplot 绘制实验数据

热门文章

  1. 健康身心态的10条法宝
  2. 30-80k/月!影创科技算法岗招聘,含实习生
  3. 25-60k/m | 湃道智能招聘
  4. CVPR 2020|华为发布基于连续进化的CARS算法,0.4GPU天输出帕累托前沿
  5. YOLOv3剪枝再升级!
  6. 第一届LCI workshop @ ICCV 2019, 欢迎投稿
  7. 《是碰巧还是执着?python所阅读的每一场知识点,唯一的共同点就是——参赛选手中,有详解Python的装饰器!》
  8. 639 页《深度学习:Deep Learning》硬核课程 PPT 下载
  9. 收藏 | 在yolov5上验证一些不成熟的想法
  10. 综述 | Google团队发布,一文概览Transformer模型的17大高效变种