MAKEFILE
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:5k
源码类别:

Windows编程

开发平台:

Visual C++

  1. ####
  2. #makefile - makefile for hello.exe
  3. #
  4. #       Copyright 1994 - 1997 Microsoft Corporation
  5. #
  6. #Purpose:
  7. #  Builds the OLE 2.0 Automation object, hello.exe.
  8. #  By default a 32 bit ANSI application that can run on Win95
  9. #  and NT 3.51 is built.
  10. #
  11. #  Usage: NMAKE                 ; build with default (32 bit ANSI for NT & Win95)
  12. #     or: NMAKE option          ; build with the given option(s)
  13. #     or: NMAKE clean           ; erase all compiled files
  14. #  Use NMAKE clean before re-building with options.
  15. #
  16. #     option: dev = [win16 | win32]    ; dev=win32 is the default
  17. #             DEBUG=[0 | 1]          ; DEBUG=1 is the default
  18. #             HOST=[DOS | NT | WIN95]  ; HOST=DOS 
  19. #                                      ; HOST=NT (for Unicode win32 on NT)
  20. #                                      ; HOST=WIN95 (for ANSI win32 on Win95 & NT)
  21. #                                      ; HOST=WIN95 is the default
  22. #
  23. #Notes:
  24. #  This makefile assumes that the PATH, INCLUDE and LIB environment
  25. #  variables are setup properly.
  26. #
  27. ##############################################################################
  28. ##########################################################################
  29. #
  30. # Default Settings
  31. # Change the following dev & HOST settings to compile hello for 16 bit, 
  32. # 32 bit Unicode on NT or 32 bit ANSI on NT & Win95
  33. !if "$(dev)" == ""
  34. dev = win32 
  35. HOST = WIN95
  36. !endif
  37. !if !("$(dev)" == "win16" || "$(dev)" == "win32")
  38. !error Invalid dev option, choose from [win16 | win32]
  39. !endif
  40. !if "$(dev)" == "win16"
  41. TARGET  = WIN16
  42. !if "$(HOST)" == ""
  43. HOST  = DOS
  44. !endif
  45. !endif
  46. !if "$(dev)" == "win32"
  47. TARGET  = WIN32
  48. !if "$(HOST)" == ""
  49. HOST  = WIN95
  50. !endif
  51. !endif
  52. !undef NODEBUG
  53. !if "$(DEBUG)" == "0"
  54. NODEBUG = 1
  55. !endif
  56. ##########################################################################
  57. #
  58. # WIN16 Settings
  59. #
  60. !if "$(TARGET)" == "WIN16"
  61. CC   = cl
  62. LINK = link
  63. !if "$(HOST)" == "DOS"
  64. WX   = wx /w 
  65. !else
  66. WX   =
  67. !endif
  68. TLIBCOMPILER = $(WX) mktyplib
  69. RCFLAGS = -dWIN16
  70. CFLAGS = -c -W3 -AM -GA -GEs -DWIN16
  71. LINKFLAGS = /NOD /NOI /BATCH /ONERROR:NOEXE
  72. LIBS = libw.lib mlibcew.lib
  73. !ifdef NODEBUG
  74. CFLAGS = $(CFLAGS) -Ox $(CL)
  75. LINKFLAGS = $(LINKFLAGS) /FAR /PACKC
  76. !else
  77. CFLAGS = $(CFLAGS) -Od -Zi -D_DEBUG $(CL)
  78. LINKFLAGS = $(LINKFLAGS) /COD
  79. !endif
  80. !endif
  81. ##########################################################################
  82. #
  83. # WIN32 Settings
  84. #
  85. !if "$(TARGET)" == "WIN32"
  86. WX = 
  87. TLIBCOMPILER = MIDL /mktyplib203 
  88. !include <olesampl.mak>
  89. CC = $(cc)
  90. CFLAGS = $(cflags) $(cvarsmt) -DINC_OLE2 $(cdebug)
  91. !if "$(HOST)" == "NT"
  92. CFLAGS = $(CFLAGS) -DUNICODE
  93. !endif
  94. !ifdef NODEBUG
  95. !else
  96. CFLAGS = $(CFLAGS) -D_DEBUG
  97. !endif
  98. LINK = $(link)
  99. LINKFLAGS = $(linkdebug) $(guilflags)
  100. RCFLAGS = -DWIN32
  101. !endif
  102. ##########################################################################
  103. #
  104. # Build rules
  105. #
  106. .cpp.obj:
  107.     @echo Compiling $<...
  108.     $(CC) $<
  109. .c.obj:
  110.     @echo Compiling $<...
  111.     $(CC) $<
  112. ##########################################################################
  113. #
  114. # Application Settings
  115. #
  116. APPS = hello
  117. !if "$(TARGET)" == "WIN16"
  118. LIBS = ole2.lib compobj.lib ole2disp.lib typelib.lib commdlg.lib $(LIBS)
  119. !endif
  120. !if "$(TARGET)" == "WIN32"
  121. LIBS = $(ole2libsmt)
  122. !endif
  123. OBJS = main.obj hello.obj hellocf.obj  
  124. ##########################################################################
  125. #
  126. # Default Goal
  127. #
  128. goal : setflags $(APPS).exe
  129. setflags :
  130.     set CL=$(CFLAGS)
  131. ##########################################################################
  132. #
  133. # Application Build (WIN16 Specific)
  134. #
  135. !if "$(TARGET)" == "WIN16"
  136. $(APPS).exe : $(APPS).tlb $(OBJS) $(APPS).def $(APPS).res  
  137.     link $(LINKFLAGS) @<<
  138. $(OBJS),
  139. $@,,
  140. $(LIBS),
  141. $(APPS).def
  142. <<
  143.     rc -k -t $(APPS).res $@
  144. !endif
  145. ##########################################################################
  146. #
  147. # Application Build (WIN32 Specific)
  148. #
  149. !if "$(TARGET)" == "WIN32"
  150. $(APPS).exe : $(APPS).tlb $(OBJS) $(APPS).def $(APPS).res 
  151.       $(LINK) @<< 
  152.         $(LINKFLAGS)
  153.         -out:$@ 
  154.         -map:$*.map
  155.         $(OBJS)
  156.         $(APPS).res
  157.         $(LIBS)
  158. <<
  159. !endif
  160.     
  161. ##########################################################################
  162. #
  163. # Application Build (Common)
  164. #
  165. $(APPS).res : $(APPS).rc
  166.     rc $(RCFLAGS) -r -fo$@ $?
  167. ##########################################################################
  168. #
  169. # Dependencies
  170. #
  171. hello.tlb : hello.odl
  172.      if exist tlb.h  del tlb.h
  173.      if exist hello.tlb  del hello.tlb
  174.      $(TLIBCOMPILER) /D$(TARGET) /h tlb.h /o hello.log /tlb hello.tlb hello.odl
  175.      type hello.log
  176.      
  177. main.obj : main.cpp hello.h tlb.h
  178.      $(CC) main.cpp     
  179. hello.obj : hello.cpp hello.h tlb.h
  180.      $(CC) hello.cpp
  181. hellocf.obj : hellocf.cpp hello.h tlb.h
  182.      $(CC) hellocf.cpp 
  183. ##########################################################################
  184. #
  185. # Clean (erase) generated files
  186. #
  187. clean :
  188.     if exist *.obj       del *.obj
  189.     if exist $(APPS).map del $(APPS).map
  190.     if exist $(APPS).res del $(APPS).res
  191.     if exist *.log       del *.log
  192.     if exist *.pdb       del *.pdb