zoukankan      html  css  js  c++  java
  • (转)nmake学习笔记

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

  • 相关阅读:
    64位整数乘法
    HTML中常见问题汇总贴
    题解 牛客【「水」悠悠碧波】
    题解 CF1391B 【Fix You】
    四级-句子
    快速幂||取余运算
    最大子列和
    JvavScript中的函数与对象
    JavaScript中的流程控制语句
    冒泡排序,选择排序,插入排序,归并排序
  • 原文地址:https://www.cnblogs.com/wuyuans/p/4320104.html
Copyright © 2011-2022 走看看