#makefile文件定义
#*************************************************************************
#nmake工具的描述文件例子
#x.asm + 头文件common.inc 经ML.exe编译成:x.obj
#y.asm + 头文件common.inc + y.inc 经ML.exe编译成:y.obj
#资源脚本文件x.rc,经过Rc.exe编译成x.res
#最后x.obj + y.obj + x.res 经Link.exe链接成test.exe
#*************************************************************************
#注释:以#开头的一行为注释,换行符“/”之后不能写注释
#宏定义
#*************************************************************************
#1、引用宏时只需在变量前加“$”符号
#2、如果变量超过一个字符,引用时需加()
#3、如需修改宏定义,只要在命令行用新的宏定义覆盖如:
# namke ML_FLAG="/c /coff /Fl"
#宏名称要区分大小写,ML_FLAG和ml_flag是不一样的,定义值
中有空格的时候要用双引号引起来(如无空格:ML_FLAG=/c)
#*************************************************************************
EXE = Test.exe #指定输出文件
OBJS = x.obj \
y.obj #需要的目标文件
RES = x.res #需要的资源文件
LINK_FLAG = /subsystem:windows #链接选项
ML_FLAG = /c /coff #编译选项
#显示规则 定义依赖关系和执行命令
#*************************************************************************
#1、nmake默认将整个描述文件的第一条规则中的目标文件认为最终文件
#2、在nmake的命令行参数中可以指定要生成的目标如:nmake x.res
# 参数可以带好几个目标文件名,namke会一一处理,若指定的目标文件
# 没有对应的规则,nmake会返回一个出错信息:
# fatal error U1073:don't know how to make ‘xxx文件’
#*************************************************************************
$(EXE): $(OBJS) $(RES)
LINK $(LINK_FLAG) /out:$(EXE) $(OBJS) $(RES)
$(OBJS):Common.inc
y.obj: y.inc
#隐式规则 定义汇编编译和资源编译的默认规则
#************************************************************************
#1、隐式规则不能有依赖文件
#2、隐式规则中无法指定确定的输入文件名,因为输入文件名是泛指具有
# 相同扩展名的一整类文件,这时候需要几个特殊内定宏指定文件名:
# $@————全路径的目标文件
# $*————除去扩展名的全路径的目标文件
# $?————所有源文件名
# $<————源文件名(只能用在隐式规则中)
#************************************************************************
.asm.obj:
ml $(ML_FLAG) $<
.rc.res:
rc $<
#清除临时文件
#*************************************************************************
#键入nmake clean的时候,工作命令下没有clean这个文件,nmake会去执行
#clean定义中的命令
#*************************************************************************
clean:
del *.obj
del *.res