码迷,mamicode.com
首页 > 其他好文 > 详细

(转)nmake学习笔记

时间:2015-03-07 13:58:34      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:

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,也可以执行。

(转)nmake学习笔记

标签:

原文地址:http://www.cnblogs.com/wuyuans/p/4320104.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!