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

Windows编程

开发平台:

Visual C++

  1. # =========================================================================
  2. # WIN32.MAK - Win32 application master NMAKE definitions file for the
  3. #               Microsoft Win32 SDK for Windows programming samples
  4. # -------------------------------------------------------------------------
  5. # This files should be included at the top of all MAKEFILEs as follows:
  6. #  !include <win32.mak>
  7. # -------------------------------------------------------------------------
  8. #
  9. # Define APPVER = [ 3.51 | 4.0 ] prior to including win32.mak to get
  10. #  build time checking for version dependencies and to mark the executable
  11. #  with version information.
  12. #
  13. # Define TARGETOS = [ WIN95 | WINNT | BOTH ] prior to including win32.mak
  14. #  to get some build time checking for platform dependencies.
  15. #
  16. # Define TARGETLANG = [ LANG_JAPANESE ] prior to including win32.mak to get
  17. #  compile & link flags for building applications to run on Japanese Windows.
  18. #  (This is an optional parameter.  The system locale is the default.)
  19. #
  20. # -------------------------------------------------------------------------
  21. # NMAKE Options
  22. #
  23. # Use the table below to determine the additional options for NMAKE to
  24. # generate various application debugging, profiling and performance tuning
  25. # information.
  26. #
  27. # Application Information Type         Invoke NMAKE
  28. # ----------------------------         ------------
  29. # For No Debugging Info                nmake nodebug=1
  30. # For Working Set Tuner Info           nmake tune=1
  31. # For Call Attributed Profiling Info   nmake profile=1
  32. #
  33. # Note: The three options above are mutually exclusive (you may use only
  34. #       one to compile/link the application).
  35. #
  36. # Note: creating the environment variables NODEBUG, TUNE, and PROFILE is an
  37. #       alternate method to setting these options via the nmake command line.
  38. #
  39. # Additional NMAKE Options             Invoke NMAKE
  40. # ----------------------------         ------------
  41. # For No ANSI NULL Compliance          nmake no_ansi=1
  42. # (ANSI NULL is defined as PVOID 0)
  43. #
  44. # =========================================================================
  45. !IFNDEF _WIN32_MAK_
  46. _WIN32_MAK_ = 1
  47. # -------------------------------------------------------------------------
  48. # Get CPU Type - exit if CPU environment variable is not defined
  49. # -------------------------------------------------------------------------
  50. !IF "$(CPU)" == ""
  51. CPU = i386
  52. !ENDIF
  53. !IF "$(CPU)" != "i386"
  54. !IF "$(CPU)" != "MIPS"
  55. !IF "$(CPU)" != "ALPHA"
  56. !IF "$(CPU)" != "PPC"
  57. !ERROR  Must specify CPU environment variable ( CPU=i386, CPU=MIPS, CPU=ALPHA, CPU=PPC)
  58. !ENDIF
  59. !ENDIF
  60. !ENDIF
  61. !ENDIF
  62. # -------------------------------------------------------------------------
  63. # Get Target Operating System - Default to both
  64. # -------------------------------------------------------------------------
  65. !IFNDEF TARGETOS
  66. TARGETOS = BOTH
  67. !ENDIF
  68. !IF "$(TARGETOS)" != "WINNT"
  69. !IF "$(TARGETOS)" != "WIN95"
  70. !IF "$(TARGETOS)" != "BOTH"
  71. !ERROR Must specify TARGETOS environment variable (BOTH, WIN95, WINNT)
  72. !ENDIF
  73. !ENDIF
  74. !ENDIF
  75. # -------------------------------------------------------------------------
  76. # Set Default APPVER - depends on target language
  77. #
  78. # Defaults to 4.0 for all applications except NT specific.
  79. # -------------------------------------------------------------------------
  80. !IFNDEF APPVER
  81. APPVER = 4.0
  82. !IF "$(TARGETOS)" == "WINNT"
  83. !IF "$(TARGETLANG)" == "LANG_JAPANESE"
  84. APPVER = 3.51
  85. !ENDIF
  86. !ENDIF
  87. !ENDIF
  88. !IF "$(APPVER)" != "4.0"
  89. !IF "$(APPVER)" != "3.51"
  90. !ERROR Must specify APPVER environment variable (3.51, 4.0)
  91. !ENDIF
  92. !ENDIF
  93. # binary declarations common to all platforms
  94. cc     = cl
  95. rc     = rc
  96. link   = link
  97. implib = lib
  98. hc     = hcrtf -x
  99. # for compatibility with older-style makefiles
  100. cvtobj = REM !!! CVTOBJ is no longer necessary - please remove !!!
  101. cvtres = REM !!! CVTRES is no longer necessary - please remove !!!
  102. # -------------------------------------------------------------------------
  103. # Platform Dependent Compile Flags - must be specified after $(cc)
  104. #
  105. # Note: Debug switches are on by default for current release
  106. #
  107. # These switches allow for source level debugging with WinDebug for local
  108. # and global variables.
  109. #
  110. # Both compilers now use the same front end - you must still define either
  111. # _X86_, _MIPS_, _PPC_ or _ALPHA_.  These have replaced the i386, MIPS, and ALPHA
  112. # definitions which are not ANSI compliant.
  113. #
  114. # Common compiler flags:
  115. #   -c   - compile without linking
  116. #   -W3  - Set warning level to level 3
  117. #   -Zi  - generate debugging information
  118. #   -Od  - disable all optimizations
  119. #   -Ox  - use maximum optimizations
  120. #   -Zd  - generate only public symbols and line numbers for debugging
  121. #
  122. # i386 specific compiler flags:
  123. #   -Gz  - stdcall
  124. #
  125. # -------------------------------------------------------------------------
  126. # declarations common to all compiler options
  127. ccommon = -c -W3 -Dtry=__try -Dexcept=__except -Dleave=__leave -Dfinally=__finally -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo
  128. !IF "$(TARGETLANG)" == "LANG_JAPANESE"
  129. ccommon = $(ccommon) -DJAPAN -DDBCS -DFE_IME
  130. !ENDIF
  131. !IF "$(CPU)" == "i386"
  132. cflags = $(ccommon) -D_X86_=1
  133. scall  = -Gz
  134. !ELSE
  135. !IF "$(CPU)" == "MIPS"
  136. cflags = $(ccommon) -D_MIPS_=1
  137. !ELSE
  138. !IF "$(CPU)" == "PPC"
  139. cflags = $(ccommon) -D_PPC_=1
  140. !ELSE
  141. !IF "$(CPU)" == "ALPHA"
  142. cflags = $(ccommon) -D_ALPHA_=1
  143. !ENDIF
  144. !ENDIF
  145. !ENDIF
  146. scall  =
  147. !ENDIF
  148. !IF "$(TARGETOS)" == "WINNT"
  149. !IF "$(TARGETLANG)" == "LANG_JAPANESE"
  150. cflags = $(cflags) -D_WINNT -D_WIN32_WINNT=0x0351
  151. !ELSE
  152. cflags = $(cflags) -D_WINNT -D_WIN32_WINNT=0x0400
  153. !ENDIF
  154. !ELSE
  155. !IF "$(TARGETOS)" == "WIN95"
  156. cflags = $(cflags) -D_WIN95 -D_WIN32_WINDOWS=0x0400
  157. !ENDIF
  158. !ENDIF
  159. # For this release, for all values of APPVER, WINVER is 0x0400
  160. cflags = $(cflags) -DWINVER=0x0400
  161. !IFDEF NODEBUG
  162. cdebug = -Ox
  163. !ELSE
  164. !IFDEF PROFILE
  165. cdebug = -Gh -Zd -Ox
  166. !ELSE
  167. !IFDEF TUNE
  168. cdebug = -Gh -Zd -Ox
  169. !ELSE
  170. cdebug = -Z7 -Od
  171. !ENDIF
  172. !ENDIF
  173. !ENDIF
  174. # -------------------------------------------------------------------------
  175. # Target Module & Subsystem Dependent Compile Defined Variables - must be
  176. #   specified after $(cc)
  177. #
  178. # The following table indicates the various acceptable combinations of
  179. # the C Run-Time libraries LIBC, LIBCMT, and CRTDLL respect to the creation
  180. # of a EXE and/or DLL target object.  The appropriate compiler flag macros
  181. # that should be used for each combination are also listed.
  182. #
  183. #  Link EXE    Create Exe    Link DLL    Create DLL
  184. #    with        Using         with         Using
  185. # ----------------------------------------------------
  186. #  LIBC        CVARS          None        None      *
  187. #  LIBC        CVARS          LIBC        CVARS
  188. #  LIBC        CVARS          LIBCMT      CVARSMT
  189. #  LIBCMT      CVARSMT        None        None      *
  190. #  LIBCMT      CVARSMT        LIBC        CVARS
  191. #  LIBCMT      CVARSMT        LIBCMT      CVARSMT
  192. #  CRTDLL      CVARSDLL       None        None      *
  193. #  CRTDLL      CVARSDLL       LIBC        CVARS
  194. #  CRTDLL      CVARSDLL       LIBCMT      CVARSMT
  195. #  CRTDLL      CVARSDLL       CRTDLL      CVARSDLL  *
  196. #
  197. # * - Denotes the Recommended Configuration
  198. #
  199. # When building single-threaded applications you can link your executable
  200. # with either LIBC, LIBCMT, or CRTDLL, although LIBC will provide the best
  201. # performance.
  202. #
  203. # When building multi-threaded applications, either LIBCMT or CRTDLL can
  204. # be used as the C-Runtime library, as both are multi-thread safe.
  205. #
  206. # Note: Any executable which accesses a DLL linked with CRTDLL.LIB must
  207. #       also link with CRTDLL.LIB instead of LIBC.LIB or LIBCMT.LIB.
  208. #       When using DLLs, it is recommended that all of the modules be
  209. #       linked with CRTDLL.LIB.
  210. #
  211. # Note: The macros of the form xDLL are used when linking the object with
  212. #       the DLL version of the C Run-Time (that is, CRTDLL.LIB).  They are
  213. #       not used when the target object is itself a DLL.
  214. #
  215. # -------------------------------------------------------------------------
  216. !IFDEF NO_ANSI
  217. noansi = -DNULL=0
  218. !ENDIF
  219. # for Windows applications that use the C Run-Time libraries
  220. cvars      = -DWIN32 $(noansi) -D_WIN32
  221. cvarsmt    = $(cvars) -D_MT
  222. cvarsdll   = $(cvarsmt) -D_DLL
  223. # for compatibility with older-style makefiles
  224. cvarsmtdll   = $(cvarsmt) -D_DLL
  225. # for POSIX applications
  226. psxvars    = -D_POSIX_
  227. # resource compiler
  228. rcflags = /r
  229. rcvars = -DWIN32 -D_WIN32 -DWINVER=0x0400 $(noansi)
  230. !IF "$(TARGETLANG)" == "LANG_JAPANESE"
  231. rcflags = $(rcflags) /c932
  232. rcvars = $(rcvars) -DJAPAN -DDBCS -DFE_IME
  233. !ENDIF
  234. # -------------------------------------------------------------------------
  235. # Platform Dependent Link Flags - must be specified after $(link)
  236. #
  237. # Note: $(DLLENTRY) should be appended to each -entry: flag on the link
  238. #       line.
  239. #
  240. # Note: When creating a DLL that uses C Run-Time functions it is
  241. #       recommended to include the entry point function of the name DllMain
  242. #       in the DLL's source code.  Also, the MAKEFILE should include the
  243. #       -entry:_DllMainCRTStartup$(DLLENTRY) option for the creation of
  244. #       this DLL.  (The C Run-Time entry point _DllMainCRTStartup in turn
  245. #       calls the DLL defined DllMain entry point.)
  246. #
  247. # -------------------------------------------------------------------------
  248. # declarations common to all linker options
  249. lcommon = /NODEFAULTLIB /INCREMENTAL:NO /PDB:NONE /RELEASE /NOLOGO
  250. # declarations for use on Intel i386, i486, and Pentium systems
  251. !IF "$(CPU)" == "i386"
  252. DLLENTRY = @12
  253. lflags   = $(lcommon) -align:0x1000
  254. !ENDIF
  255. # declarations for use on self hosted MIPS R4x000 systems
  256. !IF "$(CPU)" == "MIPS"
  257. DLLENTRY =
  258. lflags   = $(lcommon)
  259. !ENDIF
  260. # declarations for use on self hosted PowerPC systems
  261. !IF "$(CPU)" == "PPC"
  262. DLLENTRY =
  263. lflags   = $(lcommon)
  264. !ENDIF
  265. # declarations for use on self hosted Digital Alpha AXP systems
  266. !IF "$(CPU)" == "ALPHA"
  267. DLLENTRY =
  268. lflags   = $(lcommon)
  269. !ENDIF
  270. # -------------------------------------------------------------------------
  271. # Target Module Dependent Link Debug Flags - must be specified after $(link)
  272. #
  273. # These switches allow the inclusion of the necessary symbolic information
  274. # for source level debugging with WinDebug, profiling and/or performance
  275. # tuning.
  276. #
  277. # Note: Debug switches are on by default.
  278. # -------------------------------------------------------------------------
  279. !IFDEF NODEBUG
  280. ldebug = /RELEASE
  281. !ELSE
  282. !IFDEF PROFILE
  283. ldebug = -debug:mapped,partial -debugtype:coff
  284. !ELSE
  285. !IFDEF TUNE
  286. ldebug = -debug:mapped,partial -debugtype:coff
  287. !ELSE
  288. ldebug = -debug:full -debugtype:cv
  289. !ENDIF
  290. !ENDIF
  291. !ENDIF
  292. # for compatibility with older-style makefiles
  293. linkdebug = $(ldebug)
  294. # -------------------------------------------------------------------------
  295. # Subsystem Dependent Link Flags - must be specified after $(link)
  296. #
  297. # These switches allow for source level debugging with WinDebug for local
  298. # and global variables.  They also provide the standard application type and
  299. # entry point declarations.
  300. #
  301. # Note that on x86 screensavers have a WinMain entrypoint, but on RISC
  302. # platforms it is main.  This is a Win95 compatibility issue.
  303. #
  304. # -------------------------------------------------------------------------
  305. # for Windows applications that use the C Run-Time libraries
  306. conlflags = $(lflags) -subsystem:console,$(APPVER) -entry:mainCRTStartup
  307. guilflags = $(lflags) -subsystem:windows,$(APPVER) -entry:WinMainCRTStartup
  308. dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll
  309. !IF "$(CPU)" == "i386"
  310. savlflags = $(lflags) -subsystem:windows,$(APPVER) -entry:WinMainCRTStartup
  311. !ELSE
  312. savlflags = $(lflags) -subsystem:windows,$(APPVER) -entry:mainCRTStartup
  313. !ENDIF
  314. # for POSIX applications
  315. psxlflags = $(lflags) -subsystem:posix -entry:__PosixProcessStartup
  316. # for compatibility with older-style makefiles
  317. conflags  = $(conlflags)
  318. guiflags  = $(guilflags)
  319. psxflags  = $(psxlflags)
  320. # -------------------------------------------------------------------------
  321. # C Run-Time Target Module Dependent Link Libraries
  322. #
  323. # Below is a table which describes which libraries to use depending on the
  324. # target module type, although the table specifically refers to Graphical
  325. # User Interface apps, the exact same dependencies apply to Console apps.
  326. # That is, you could replace all occurrences of 'GUI' with 'CON' in the
  327. # following:
  328. #
  329. # Desired CRT  Libraries   Desired CRT  Libraries
  330. #   Library     to link      Library     to link
  331. #   for EXE     with EXE     for DLL     with DLL
  332. # ----------------------------------------------------
  333. #   LIBC       GUILIBS       None       None       *
  334. #   LIBC       GUILIBS       LIBC       GUILIBS
  335. #   LIBC       GUILIBS       LIBCMT     GUILIBSMT
  336. #   LIBCMT     GUILIBSMT     None       None       *
  337. #   LIBCMT     GUILIBSMT     LIBC       GUILIBS
  338. #   LIBCMT     GUILIBSMT     LIBCMT     GUILIBSMT
  339. #   CRTDLL     GUILIBSDLL    None       None       *
  340. #   CRTDLL     GUILIBSDLL    LIBC       GUILIBS
  341. #   CRTDLL     GUILIBSDLL    LIBCMT     GUILIBSMT
  342. #   CRTDLL     GUILIBSDLL    CRTDLL     GUILIBSDLL *
  343. #
  344. # * - Recommended Configurations.
  345. #
  346. # Note: Any executable which accesses a DLL linked with CRTDLL.LIB must
  347. #       also link with CRTDLL.LIB instead of LIBC.LIB or LIBCMT.LIB.
  348. #
  349. # Note: For POSIX applications, link with $(psxlibs).
  350. #
  351. # -------------------------------------------------------------------------
  352. # These CRT Libraries assume the use of Microsoft Visual C++.  If you are
  353. # using another Compiler product, change the libc* variable to correspond
  354. # to your import library names.
  355. libc = libc.lib oldnames.lib
  356. libcmt = libcmt.lib oldnames.lib
  357. libcdll = msvcrt.lib oldnames.lib
  358. # for POSIX applications
  359. psxlibs    = libcpsx.lib psxdll.lib psxrtl.lib oldnames.lib
  360. # optional profiling and tuning libraries
  361. !IFDEF PROFILE
  362. optlibs =  cap.lib
  363. !ELSE
  364. !IFDEF TUNE
  365. optlibs = wst.lib
  366. !ELSE
  367. optlibs =
  368. !ENDIF
  369. !ENDIF
  370. # basic subsystem specific libraries, less the C Run-Time
  371. baselibs   = kernel32.lib $(optlibs) advapi32.lib
  372. winlibs    = $(baselibs) user32.lib gdi32.lib comdlg32.lib winspool.lib
  373. # for Windows applications that use the C Run-Time libraries
  374. conlibs    = $(libc) $(baselibs)
  375. conlibsmt  = $(libcmt) $(baselibs)
  376. conlibsdll = $(libcdll) $(baselibs)
  377. guilibs    = $(libc) $(winlibs)
  378. guilibsmt  = $(libcmt) $(winlibs)
  379. guilibsdll = $(libcdll) $(winlibs)
  380. # for OLE applications
  381. olelibs      = ole32.lib uuid.lib oleaut32.lib $(guilibs)
  382. olelibsmt    = ole32.lib uuid.lib oleaut32.lib $(guilibsmt)
  383. olelibsdll   = ole32.lib uuid.lib oleaut32.lib $(guilibsdll)
  384. # for backward compatibility
  385. ole2libs    = $(olelibs)
  386. ole2libsmt  = $(olelibsmt)
  387. ole2libsdll = $(olelibsdll)
  388. #ENDIF _WIN32_MAK_
  389. !ENDIF