声明
本文来自《msdn开发精选》杂志2005年第4期“特别策划”栏目,本文版权归杂志编辑部所有,未经许可,禁止转载!
作者:RAYMAN
当我们开发完Pocket PC或者Smartphone的软件后,都需要考虑如何制作给最终用户使用的软件安装包。专门用于制作安装包的软件有很多,如Install Shield等。但在许多情况下,我们仅仅需要一些比较简单的安装过程,这时候我们完全可以利用SDK中提供的工具和一些免费的软件来制作安装包。另外,我们制作的软件经常会需要在不同的平台下运行,例如笔者开发的一个软件同时支持HPC,PPC,Smartphone等平台,HPC和PPC平台上还有3种CPU类型。如果每一步操作完成后都需要人工介入进行操作的话,每一次构建过程都会相当的繁琐和耗时。所以我们会考虑如何将一系列的操作采用脚本串接起来,只需要运行一个命令就能够生成最终需要的所有安装包。
用命令行编译链接程序
虽然EVC里提供了Batch Build的功能,但该功能只能用于同一平台的不同CPU版本的编译链接操作。在切换不同平台进行编译时,需要在GUI环境中手工执行,无法达到我们要求。所以我们需要研究如何在命令行状态下进行程序的编译运行。实际上EVC程序本身是提供了一系列的命令可以用于命令行编译的。
D:/Program Files/Microsoft eMbedded Tools/Common/EVC/Bin>evc /?
Usage:
EVC [myprj.vcp|mywksp.vcw] - load project/workspace
[<filename>] - load source file
/? - display usage information
/EX <macroname> - execute a VBScript macro
/OUT <filename> - redirect command line output to a file
/USEENV - ignore tools.options.directories settings
/MAKE [<target>] [...] - build specified target(s)
[<project> - <platform> <configname>]
[[<project>|ALL] - [DEBUG|RELEASE|ALL]]
/CLEAN - delete intermediate files but don't build
/REBUILD - clean and build
/NORECURSE - don't build dependent projects
/CECONFIG [<configuration>] - use specified configuration
其中主要是运用MAKE命令。假设我们需要编译的程序名叫做Demo,工作环境文件名为demo.vcw,PPC版的工程项目文件为Demo.vcp,Smartphone版本的项目文件为DemoSP.vcp.我们为EVC3编写好的批处理文件build.bat如下:
REM @echo off
set EVC="D:/Program Files/Microsoft eMbedded Tools/Common/EVC/Bin/EVC.EXE" <-指向EVC 3.0程序所在目录
set CFG=
set CECONFIG=
%EVC% Demo.vcw /make "%CFG%" /CEConfig=%CECONFIG% /rebuild <-执行编译并生成目标可执行文件
if errorlevel 1 goto :eof <-如果编译失败则终止批处理
:pocketpc
set CFG=Demo - Win32 (WCE ARM) Release<-将要进行编译的项目名称和编译出来的目标代码的平台和CPU类型。其中“-”前面的是项目名称,“-”后面的部分是平台和CPU类型以及编译的是Release版还是Debug版。格式可以参照在EVC的Build->Configurations中的写法, EVC3 和 EVC4的表达方式略有不同。
set CECONFIG="Pocket PC" <-编译PPC平台版本
%EVC% Demo.vcw /make "%CFG%" /CEConfig=%CECONFIG% /rebuild
if errorlevel 1 goto :eof
set CFG=Demo - Win32 (WCE MIPS) Release
%EVC% Demo.vcw /make "%CFG%" /CEConfig=%CECONFIG% /rebuild
if errorlevel 1 goto :eof
set CFG=Demo - Win32 (WCE