之前我们已经获取了当前项目的所有的代码,并把他们放入了指定的目录。下面是如何构建这些代码。本文以介绍VC的批处理过程,要注意的是,VC6的处理过程和VC.NET是不同,首先我们来看VC6如何命令行构建代码。
1. 创建mak文件
直接使用VC6的项目文件是无法在命令行编译的,所以要先导成.mak文件。
在VC IDE的菜单中有导出的功能,他会在工程目录下生成一个对应的mak文件。另外,在VC的设置中可以设置保存项目文件同时导出mak文件,选中这个功能你的mak文件和项目文件就同步了。
最后一个工作就是把mak文件加入版本管理软件。这是应该还有一个dep文件,它描述了项目中文件的依赖项,由于这些项使用的都是相对路径,是个相当危险的东西,建议不加入,虽然这样编译的时候会出现找不到.dep文件的提示。
需要注意的是,当你的项目在版本管理软件控制下,如果mak文件没有Check Out,导出失败是没有提示的,所以在工程文件Check Out的时候,同时Check Out mak文件是一个必须养成的好习惯。
2. 设置编译路径
如果在安装的时候没有选择设置环境变量的选项,则需要在编译程序运行之前设置编译所需路径。
VC的标准路径,VC6保存在VC98\bin\VCVARS32.BAT中,可以将BAT中的内容直接拷贝到自己的脚本里。标准脚本如下:
@echo off
rem
rem Root of Visual Developer Studio Common files.
set VSCommonDir=C:\PROGRA~1\MICROS~3\Common
rem
rem Root of Visual Developer Studio installed files.
rem
set MSDevDir=C:\PROGRA~1\MICROS~3\Common\msdev98
rem
rem Root of Visual C++ installed files.
rem
set MSVCDir=C:\PROGRA~1\MICROS~3\VC98
rem
rem VcOsDir is used to help create either a Windows 95 or Windows NT specific path.
rem
set VcOsDir=WIN95
if "%OS%" == "Windows_NT" set VcOsDir=WINNT
rem
echo Setting environment for using Microsoft Visual C++ tools.
rem
if"%OS%"=="Windows_NT" set PATH = %MSDevDir%\BIN;%MSVCDir%\BIN;%VSCommonDir%\TOOLS\%VcOsDir%;%VSCommonDir%\TOOLS;%PATH%
if "%OS%" == "" set PATH="%MSDevDir%\BIN";"%MSVCDir%\BIN";"%VSCommonDir%\TOOLS\%VcOsDir%";"%VSCommonDir%\TOOLS";"%windir%\SYSTEM";"%PATH%"
set INCLUDE=%MSVCDir%\ATL\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\MFC\INCLUDE;%INCLUDE%
set LIB=%MSVCDir%\LIB;%MSVCDir%\MFC\LIB;%LIB%
set VcOsDir=
set VSCommonDir=
然后需要添加自定义的路径,对应VC中的路径设置项%PATH%前面添加Executable files;%INCLUDE%前面添建Include files; %LIB%前面添加Library files。
注意:如果使用了类似#import <msxml3.dll>的指令,一定要在%PATH%前面添加windows的系统路径:
%windir%\System32
3. 使用namke.exe构建
编译目录设置之后,就可以直接使用一下命令构建工程:
nmake myproject.mak
使用-clean参数清除编译项:
nmake –clean myproject.mak
使用CFG来设置编译设置
nmake mapchina.mak CFG="MyProject - Win32 Debug"
注意:CFG的值可以从mak文件和工程文件中获得。Mak文件包含一个默认的设置,如果没有提供CFG的值,将会使用这个默认设置编译。
nmake提供的其他命令和参数,请参看MSDN的相关文档