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

Windows编程

开发平台:

Visual C++

  1. #/*+=========================================================================
  2. #  File:       MAKEFILE
  3. #
  4. #  Summary:    Makefile for building the PERDRAW.DLL executable.
  5. #              PERDRAW is a COM Component In-process Server DLL providing
  6. #              a component housing for the CODrawPage COM object.
  7. #
  8. #              PERDRAW is meant to work in conjunction with the
  9. #              PERCLIEN.EXE client application produced in the
  10. #              PERCLIEN lesson.
  11. #
  12. #              This Makefile creates a subdirectory (TEMP) for the
  13. #              .OBJ and .RES files used during the build process.  It also
  14. #              automatically registers the newly built DLL server
  15. #              as a COM server in the system Registry.  Since the build of
  16. #              this makefile does this registration you must build the
  17. #              REGISTER.EXE utility first (in sibling directory REGISTER).
  18. #
  19. #              For a comprehensive tutorial code tour of PERDRAW's
  20. #              contents and offerings see the tutorial PERDRAW.HTM
  21. #              file.  For more specific technical details see the comments
  22. #              dispersed throughout the PERDRAW source code.
  23. #
  24. #              See also PERCLIEN.HTM (in the main tutorial directory)
  25. #              for more details on the PERCLIEN client application and how
  26. #              it works with PERDRAW.DLL.
  27. #
  28. #              In general, to set up your system to build and test the
  29. #              Win32 code samples in this COM Tutorial series, see the
  30. #              main TUTORIAL.HTM file for details.  This MAKEFILE is
  31. #              Microsoft NMAKE compatible and the 'debug' build can be
  32. #              achieved by simply issuing the NMAKE command in a
  33. #              command prompt window.
  34. #
  35. #  Builds:     PERDRAW.DLL, PERDRAW.LIB
  36. #
  37. #  Origin:     5-20-97: atrent - Editor-inheritance from STOSERVE makefile.
  38. #
  39. #--Usage:-------------------------------------------------------------------
  40. #  NMAKE Options
  41. #
  42. #  Use the table below to determine the additional options for NMAKE to
  43. #  generate various application debugging, profiling and performance tuning
  44. #  information.
  45. #
  46. #  Application Information Type         Invoke NMAKE
  47. #  ----------------------------         ------------
  48. #  For No Debugging Info                nmake nodebug=1
  49. #  For Working Set Tuner Info           nmake tune=1
  50. #  For Call Attributed Profiling Info   nmake profile=1
  51. #
  52. #  Note: The three options above are mutually exclusive (you may use only
  53. #        one to compile/link the application).
  54. #
  55. #  Note: creating the environment variables NODEBUG, TUNE, and PROFILE
  56. #        is an alternate method to setting these options via the nmake
  57. #        command line.
  58. #
  59. #  Additional NMAKE Options             Invoke NMAKE
  60. #  ----------------------------         ------------
  61. #  For No ANSI NULL Compliance          nmake no_ansi=1
  62. #    (ANSI NULL is defined as PVOID 0)
  63. #  To compile for Unicode               nmake unicode=1
  64. #    (Default is ANSI)
  65. #  To clean up temporary binaries       nmake clean
  66. #  To clean up all generated files      nmake cleanall
  67. #  To register server                   nmake register
  68. #  To unregister server                 nmake unregister
  69. #
  70. #---------------------------------------------------------------------------
  71. #  This file is part of the Microsoft COM Tutorial Code Samples.
  72. #
  73. #  Copyright (C) Microsoft Corporation, 1997.  All rights reserved.
  74. #
  75. #  This source code is intended only as a supplement to Microsoft
  76. #  Development Tools and/or on-line documentation.  See these other
  77. #  materials for detailed information regarding Microsoft code samples.
  78. #
  79. #  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  80. #  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  81. #  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  82. #  PARTICULAR PURPOSE.
  83. #=========================================================================+*/
  84. #  WIN32.MAK should be included at the front of every Win32 makefile.
  85. #
  86. #  Define APPVER = [ 3.50 | 3.51 | 4.0 ] prior to including win32.mak to get
  87. #  build time checking for version dependencies and to mark the executable
  88. #  with version information.
  89. #
  90. #  Define TARGETOS = [ WIN95 | WINNT | BOTH ] prior to including win32.mak
  91. #  to get some build time checking for platform dependencies.
  92. #
  93. APPVER=4.0
  94. TARGETOS=BOTH
  95. !include <win32.mak>
  96. # Assign the main program name macros.
  97. DLL = perdraw
  98. # Use a temporary sub-directory to store intermediate
  99. # binary files like *.obj, *.res, *.map, etc.
  100. TDIR = TEMP
  101. # Assign destination and consumer sibling directories.
  102. IDIR = ..inc
  103. LDIR = ..lib
  104. REGEXE = ..registerregister.exe
  105. # The sibling ..INC and ..LIB directories are added to the front of
  106. # the INCLUDE and LIB macros to inform the compiler and linker of
  107. # these application-specific locations for include and lib files.
  108. INCLUDE=$(IDIR);$(INCLUDE)
  109. LIB=$(LDIR);$(LIB)
  110. LINK = $(link)
  111. # If UNICODE=1 is defined then define UNICODE during Compiles.
  112. # The default is to compile with ANSI for running under both
  113. # Win95 and WinNT.
  114. !IFDEF UNICODE
  115. LINKFLAGS = $(ldebug)
  116. CDBG=$(cdebug) -DUNICODE -D_UNICODE
  117. RCFLAGS = -DWIN32 -DRC_INCLUDE -DUNICODE
  118. !ELSE
  119. LINKFLAGS = $(ldebug)
  120. CDBG=$(cdebug)
  121. RCFLAGS = -DWIN32 -DRC_INCLUDE
  122. !ENDIF
  123. # If NODEBUG is not defined then define DEBUG during Compiles.
  124. # The default is to compile with debug symbols in the binaries.
  125. !IFNDEF NODEBUG
  126. CDBG = $(CDBG) -DDEBUG
  127. RCFLAGS = $(RCFLAGS) -DDEBUG
  128. !ENDIF
  129. # APPLIBS are libraries used by this application that are outside
  130. # of its indigenous file set and are needed during the final link.
  131. APPLIBS = apputil.lib shell32.lib
  132. # DLLOBJS is a macro that defines the object files for the DLL.
  133. DLLOBJS = $(TDIR)$(DLL).obj $(TDIR)server.obj $(TDIR)factory.obj 
  134.   $(TDIR)connect.obj $(TDIR)drawpage.obj
  135. # The final target.
  136. all: input tempdir output
  137. # Check if prior builds were done.
  138. input:
  139.   @IF NOT EXIST $(REGEXE) echo !!!!!! You must build REGISTER first !!!!!!
  140. # Make the temporary work sub-directory.
  141. tempdir:
  142.   -mkdir $(TDIR)
  143. # The actual output products.
  144. # Register the server after it's DLL is built.
  145. output: $(DLL).dll
  146.   if exist $(DLL).DLL if exist $(REGEXE) $(REGEXE) $(DLL).dll
  147. # Compilation/Dependency rules for the .DLL source files.
  148. #
  149. $(TDIR)$(DLL).obj: $(DLL).cpp $(DLL).h server.h
  150.   $(cc) $(cvarsdll) $(cflags) $(CDBG) -Fo$@ $(DLL).cpp
  151. $(TDIR)server.obj: server.cpp server.h $(DLL).h
  152.   $(cc) $(cvarsdll) $(cflags) $(CDBG) -Fo$@ server.cpp
  153. $(TDIR)factory.obj: factory.cpp factory.h server.h $(DLL).h
  154.   $(cc) $(cvarsdll) $(cflags) $(CDBG) -Fo$@ factory.cpp
  155. $(TDIR)connect.obj: connect.cpp connect.h server.h $(DLL).h
  156.   $(cc) $(cvarsdll) $(cflags) $(CDBG) -Fo$@ connect.cpp
  157. $(TDIR)drawpage.obj: drawpage.cpp drawpage.h server.h $(DLL).h
  158.   $(cc) $(cvarsdll) $(cflags) $(CDBG) -Fo$@ drawpage.cpp
  159. # Compile the DLL resources.
  160. $(TDIR)$(DLL).res: $(DLL).rc $(DLL).ico server.h
  161.   rc $(RCFLAGS) -r -fo$@ $(DLL).rc
  162. # Link the object and resource binaries into the target DLL binary.
  163. # Build the import LIB file so apps can link to and use this DLL.
  164. $(DLL).dll: $(DLLOBJS) $(TDIR)$(DLL).res
  165.     $(LINK)  @<<
  166.     $(LINKFLAGS) $(dlllflags)
  167.     -out:$@
  168.     -base:0x1C000000
  169.     -def:$*.def
  170.     -implib:$*.lib
  171.     -map:$(TDIR)$*.map
  172.     $(DLLOBJS)
  173.     $(TDIR)$*.res
  174.     $(olelibsdll) $(APPLIBS)
  175. <<
  176. # Target to register the server
  177. register:
  178.   if exist $(DLL).DLL if exist $(REGEXE) $(REGEXE) $(DLL).dll
  179. # Target to unregister the server
  180. unregister:
  181.   if exist $(DLL).DLL if exist $(REGEXE) $(REGEXE) /u $(DLL).dll
  182. # Target to clean up binaries.
  183. clean:
  184.   -del $(DLL).exp
  185.   -del $(DLL).lib
  186.   -deltree /y $(TDIR)
  187.   -rmdir /s /q $(TDIR)
  188. # Target to clean up all generated files.
  189. cleanall:
  190.   -del *.aps
  191.   -del *.bsc
  192.   -del *.dll
  193.   -del *.dsp
  194.   -del *.dsw
  195.   -del *.exe
  196.   -del *.exp
  197.   -del *.lib
  198.   -del *.mak
  199.   -del *.map
  200.   -del *.mdp
  201.   -del *.ncb
  202.   -del *.obj
  203.   -del *.opt
  204.   -del *.pch
  205.   -del *.pdb
  206.   -del *.plg
  207.   -del *.res
  208.   -del *.sbr
  209.   -del *.vcp
  210.   -del resource.h
  211.   -deltree /y $(TDIR)
  212.   -rmdir /s /q $(TDIR)
  213.   -deltree /y debug
  214.   -rmdir /s /q debug
  215.   -deltree /y release
  216.   -rmdir /s /q release