发信人: galfordli() 
整理人: wenbobo(2002-12-06 23:28:13), 站内信件
 | 
 
 
 #                                                                            *
 # THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF AN Y     *
 # KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE        *
 # IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULA R     *
 # PURPOSE.                                                                   *
 #                                                                            *
 # Copyright (C) 1993-95  Microsoft Corporation.  All Rights Reserved.        *
 #                                                                            *
 #********************************************************************* *******
 #                                                                           
 #       Makefile for serial device
 #
 ###################################################################### ####
 
 !ifdef MASTER_MAKE
 BUILD_BITS=32
 BUILD_TYPE=comm
 !INCLUDE $(DDKROOT)\master.mk
 !endif
 
 #这是一个串口VxD的MAKE文件
 
 #先定义了一个设备名的宏DEVICE
 DEVICE = SERIAL
 
 #所有的目标文件
 OBJS = serial.obj serutil.obj serfunc.obj serinit.obj serdbg.obj
 
 ########## Definitions ###############################
 
 ASM     = ml
 AFLAGS  = -coff -DBLD_COFF -DIS_32 -nologo -W2 -Zd -c -Cx -DMASM6
 ASMENV  = ML
 
 LFLAGS  = /VXD /NOD
 
 ############## VxD device link rule ###################
 
 .asm.obj:
 #下面一行设置了环境变量 用上面定义的宏替换就是
 #set ML=-coff -DBLD_COFF -DIS_32 -nologo -W2 -Zd -c -Cx -DMASM6
 	set $(ASMENV)=$(AFLAGS)
 #当ML环境变量设置后,在执行ml就不必写命令行选项了
 #下面一行就是引用规则,/Fo选项指定目标文件名
 	$(ASM) -Fo$*.obj $< 
 
 #下面是生成sym文件(即符号文件)的规则,
 $(DEVICE).SYM: $(DEVICE).MAP 
 #mapsym.exe将map文件转换为sym文件
 	mapsym -s -o $(DEVICE).sym $(DEVICE).map
 
 #下面是生成vxd和map文件的规则
 $(DEVICE).VXD $(DEVICE).MAP: $(OBJS)
 #这里涉及到两个重要的概念,响应文件(Response File)和内联文本(Inlinete xt),
 #响应文件作为link的输入,也是文本文件,它包括link所需的命令行选项和对提 示的响应
 #响应文件的用法是link @responsefile,并不要求特定的扩展名,这里的响应文 件
 #是serial.lnk。
 #内联文本,写在make文件中的一段文本,与一个内联文件名对应,而内联文件要 作为程序的输入
 #如下面的serial.lnk和serial.def都是内联文件。
 #"<<"作为一段内联文本的结束标志,可以看出serial.lnk是从“$(LFLAGS)”开 始的
 #而serial.def是从“VXD $(DEVICE) DYNAMIC”开始的。至于def文件的结构
 	link @<<$(DEVICE).lnk /DEF:<<$(DEVICE).def
 #应该看得出下面的宏是link的命令行选项
 $(LFLAGS)
 #下面两行是对link程序提示的响应
 #用过link的都知道它会问你输出文件和map文件名(这就是提示(prompt))
 /OUT:$(DEVICE).VXD
 /MAP:$(DEVICE).map
 $(OBJS)
 <<
 #下面是def文件的结构,大家应该比较熟悉了吧,我也就不献丑了。
 VXD $(DEVICE) DYNAMIC
 DESCRIPTION '$(DEVICE) Device'
 
 SEGMENTS
 	_LPTEXT  CLASS 'LCODE'   PRELOAD NONDISCARDABLE
 	_LTEXT   CLASS 'LCODE'   PRELOAD NONDISCARDABLE
 	_LDATA   CLASS 'LCODE'   PRELOAD NONDISCARDABLE
 	_TEXT    CLASS 'LCODE'   PRELOAD NONDISCARDABLE
 	_DATA    CLASS 'LCODE'   PRELOAD NONDISCARDABLE
 	CONST    CLASS 'LCODE'   PRELOAD NONDISCARDABLE
 	_BSS     CLASS 'LCODE'   PRELOAD NONDISCARDABLE
 	_ITEXT   CLASS 'ICODE'   DISCARDABLE
 	_IDATA   CLASS 'ICODE'   DISCARDABLE
 	_PTEXT   CLASS 'PCODE'   NONDISCARDABLE
 	_PDATA   CLASS 'PCODE'   NONDISCARDABLE
 	_STEXT   CLASS 'SCODE'   RESIDENT
 	_SDATA   CLASS 'SCODE'   RESIDENT
 	_16ICODE CLASS '16ICODE' PRELOAD DISCARDABLE
 	_RCODE   CLASS 'RCODE'
 EXPORTS
 	$(DEVICE)_DDB @1
 <<
 
 clean:
 	-@del *.obj
 	-@del *.lib
 	-@del *.exp
 	-@del *.map
 	-@del *.sym
 	-@del *.vxd
  -- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.99.77.71]
  | 
 
 
 |