在Sysgen阶段,Platform Builder根据用户的定制信息(sysgen variables setting, catalog的选择)将public目录下组件的librarys链接成dll或exe。以cellcore为例(winceroot/public/cellcore):Sysgen阶段做的事情是根据用户在catalog里面的选择(这个选择过程也就是所谓的裁剪os,选择的结果是定义了一组sysgen_*的宏),决定选取哪些library(*.lib)生成dll和exe文件。
所以,Sysgen是一个专门针对于windows ce os部分(即包含在public目录下的文件)的术语,不针对BSP和用户自建的subprojects。原因在于wince不提供所有的源代码,而且过于庞大,并且用户有裁剪OS的需求,所以需要提供一个sysgen阶段,以根据用户配置,将library链接成dll或exe。
Build概念也应用于windows ce os部分,即提供源码的部分。用户可以借助于ms提供的源码,修改os(不同于裁剪os哦)。不过这个build只相当于编译,编译完后生成的library供sysgen阶段使用。
Build 概念对于BSP目录和subproject,相当于普通的build过程,即编译和链接过程,产生可执行文件。
在platform builder 6的tools菜单中,build xxOS对应的命令行参数是blddemo norel –q,相当于Sysgen OS和build BSP和subprojects。IDE各个命令的实质,请注意其执行时的输出,那里会有其对应的命令行。
如何利用MS在private目录下提供的源码呢?我们可以修改private里面的源码,并把修改应用到编译出来的os映像中去吗?答案是可以的,private目录里面的源代码也可以用来修改os。它与public目录里面的源码主要的区别不是技术上的,而是授权上的。
Platform builder 5和Platform builder6的一个重要差别是对于catalog item的控制,在pb5中,OEM或isv如果要往catalog中加入自己的模块(如打到bsp,小到一个device的driver),以供ce用户挑选,那么他们需要提供自己的cec文件,并将cec文件添加到pb5的