理解Windows CE build过程

Windows CE系统的build系统一向是让众多CE开发者头疼的东西,这里我就来概要地谈谈我对WindowsCE build系统的理解。完整的理解整个build的流程也有助于调试和排除一些build中遇到的问题。

首先,我们安装好的Platform builder中包含了Windows CE的公开源码以及私有源码build成的lib文件。正常情况下,我们建立一个新的Windows CE OS Design项目,然后选择build,就可以生成一个nk.bin文件。那么,我们就先来了解一下build分为哪些步骤:

首先,准确地说整个build过程被称作build demo, 在命令行中,blddemo是一个批处理命令,它是用于完整build整个Windows CE操作系统。它分为三个阶段:

1.build子项目阶段(为了不致混淆,我们约定,build子项目阶段简称build阶段,整个build过程称为build demo过程):build public目录中的所有子项目,build系统根据dirs文件和sources文件中的信息识别子项目并且(理论上)互不干涉地build各个子项目。build产生的库(lib)和二进制(dll、exe)文件将会根据不同标识被复制到主项目(见注)的oak和sdk目录中(OAK是给WinCE的OEM厂商使用的,SDK是给开发者使用的)。

2.System Generate(可暂译为系统生成,简称sysgen)阶段:将build阶段产生的库文件和私有源码build成的lib文件按照主项目的makefile文件指定的方式链接成exe或者dll文件,并且将生成的文件复制到release目录中。sysgen过程受到环境变量的控制,所有sysgen_开头的环境变量都是用于控制组件的。

3.Make Image阶段:根据主项目的bib文件将release目录中的一些exe文件写入nk.bin,作为ROM的镜像。

 

以上就是builddemo过程的简单描述,实际上,具体过程还有更多复杂的细节,例如:

1.build阶段有些子项目有依赖关系,所以sources中可以指定子项目的build次序

2.build阶段会有一些localization子项目,这些子项目负责从微软的数据文件中抽取相应的res文件

3.主项目cesysgen中有很多批处理文件,用于处理sysgen变量之间的依赖关系

4.Catalog是sysgen变量的图形化操作,但是它并不能控制所有sysgen变量

5.make image阶段会替换exe文件中的资源以完成本地化

6.make image前还有BSP的build过程

……

类似的具体细节有很多,大家可以留意build demo 中产生的log

 

接下来介绍几个build时比较实用的命令

blddemo :默认的完整build demo过程,会自动检测已经build完成的子项目并且跳过

blddemo –q :快速build demo过程,会跳过build子项目阶段,直接从sysgen开始,当更改sysgen变量之后可用此项

blddemo –c :清理子项目的build demo过程,会重新build所有子项目

blddemo clean –c :清理子项目及的build demo过程,会重新build所有子项目,并且删除sysgen产生的文件重新做sysgen

makeimg :重新生成nk.bin文件

makeimg –c :会清空release目录 重新copy sysgen产生的文件并且重新生成nk.bin文件

sysgen –p <主项目名> :重新sysgen某一个主项目

sysgen –p <主项目名> <模块名> :重新sysgen某一个主项目中的一个模块,一般而言一个模块对应一个二进制文件

build :build当前目录的子项目

build –c :重新build当前目录的子项目

 

注:主项目指public目录下的一级目录

posted @ 2010-01-06 22:58 winter-cn 阅读(...) 评论(...) 编辑 收藏