• (转)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,也可以执行。

  • 相关阅读:
    Java实现 计蒜客 拯救行动
    Java实现 计蒜客 拯救行动
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 173 二叉搜索树迭代器
    Java实现 LeetCode 173 二叉搜索树迭代器
    Visual Studio的SDK配置
    怎样使用CMenu类
    mfc menu用法一
  • 原文地址:https://www.cnblogs.com/wuyuans/p/4320104.html
Copyright © 2020-2023  润新知