NMAKE参考之一——概述

来源:互联网 发布:知乎 天使投资人 编辑:程序博客网 时间:2024/06/03 15:39

本文参考了:

  • NMAKE Guide——中文版本

  • Managing Projects With NMAKE

  • NMAKE 参考

概述

NMAKE需要使用文件的 时间戳 。所谓 时间戳 是指文件最后一次被修改时的时间。大多数操作系统中会时间戳精度为2秒(译注:时间戳的精度取决于文件系统类型,比如FAT格式使用的2s精度,exFAT使用10ms,NTFS使用100ns)。NMAKE会比较目标文件及其依赖文件的时间戳。目标文件是指一个你想要生成的文件,比如一个可执行文件,当然它也可以是一个包含一系列你想要执行的命令的标签。依赖文件通常是用来生成目标文件的源代码。如果依赖文件的最后修改时间晚于目标文件的时间戳,或者目标文件不存在,那么这个目标会被标识为过期的。(如果你担心2s间隔太短,以至于可能会影响你的项目的正常编译,可以使用/B选项在时间戳相同时也重新编译)

警告:为确保NMAKE正常的工作,你的系统上的日期和时间设置必须保持一致性。如果每次启动系统时你都会重新设置时间和日期,必须保证精确地设置了系统时间。如果你的系统使用CMOS保存日期和时间,确保主板电池是正常工作的。(译注:简单的说,不要随便修改时间,如果主板没有电池导致每次重启日期都被重置到1970.1.1,最好使用在线日期同步功能,如果没有时间服务器,只好手动修改到当前时间,精确一点比较好,免得工程文件的时间戳乱掉)

NMAKE运行的时候将读取你指定的makefile文件,makefile文件(有时也称为描述文件)是一份描述了如何使用NMAKE编译你的项目的文本文件。makefile由描述块、宏、指令和推导规则组成。通常每个描述块包括一个目标文件(或多个目标文件),一个或多个依赖文件,以及如何编译目标的命令。NMAKE会比较目标文件和相关依赖文件的时间戳,如果依赖文件的时间戳与目标文件的时间戳相同或是比目标文件的时间戳更晚,那么NMAKE将执行描述块中的命令来重新生成目标文件。

NMAKE也可以不使用makefile进行编译。如果没有找到makefile,NMAKE将使用命令行参数中给定的预定义宏和推导规则指令完成编译,或是使用TOOLS.INI配置文件中提供的指令。(后文中有更多关于TOOLS.INI文件的信息)

NMAKE的主要功能是帮助你更快更方便地编译程序。然而,它并不局限于编译和链接;NMAKE也可以运行其他应用程序或是执行操作系统的命令,你可以使用NMAKE备份、移动文件和运行那些你通常在命令行下执行的工程管理任务。

本文使用术语“生成“(build)来表示目标文件的编译过程,意思是检查目标及其依赖文件的时间戳,如果目标文件的时间戳不是最后更新的,那么执行与目标相关的命令重新生成目标。无论目标文件有没有被创建或修改,术语"生成”(build)都包含上述的整个过程。