转自:http://www.armce.cn/bbs/thread-75-1-2.html
Windows mobile 编译镜像总是让人难以忍受的耗时,当然我们不能每次修改一点东西就build All一次。 下面是自己工作中积累的【不同情况下使用的编译命令】来加速生成镜像的过程,不排除有错的可能,欢迎指正。 对于修改,一般可以分为以下几种类型: (1)修改public下的东西(一般不会修改这里的东西) (2)修改了Cesysgen.bat或是会影响到Cesysgen.bat的环境变量,如以SYSGEN或BSP为前缀的变量。 (3)修改platform/%myPlatform%下的东西 其中(3)又可以分为: (4)只修改reg、bib文件 (5)只修改了%myPlatform%下的源码 一、 blddemo命令 关于blddemo,msdn里有详细介绍,但讲得很不清楚。 如果没记错的话,这是一个批处理(bat)文件,会执行一些列命令,可以根据不同情况使用不同参数, 下面主要是对其加以总结,到底什么时候用什么参数,这正是msdn没有讲清楚却是最重要的部分。 blddemo最常用的有三个参数:clean -q -qbsp (1)clean:如果修改了跟sysgen相关的,也就是说上面的第(2)种情况,那就要加上clean。 (2)-q:如果没有修改public下的东西,则可加上-q,因为public下的东西一般是不会修改的,微软不推荐修改这里的东西,所以一般都会用到-q。 (3)-qbsp:我理解是quick BSP,也就是说只要是只修改了%myPlatform%下的东西,这一个参数便肯定能将修改编入镜像,不管是源码还是reg、bib或者其他。 -qbsp 似乎已包含了-q 功能,没见过二者同时用的情况,也就是说只改动%myPlatform%下的肯定就没改动public下的,所以-qbsp一般单独使用。 对于blddemo命令最常用参数组合整理如下: 若public没改变 (a)blddemo clean -q :sysgen 改变(build all 就是使用了这个命令) (b)blddemo -q :sysgen没变 (c)blddemo -qbsp:只改变了%myplatform%下的东西 这里从上到下耗时依次减少。 若public改变,则使用blddemo 或blddemo clean ,这两项很少用到,理论上用法,没验证过。 二、makeimg 命令 以上虽然blddemo -qbsp耗时最少,但耗时还是很长。我平时用的最多的是makeimg命令,这个命令就是生成镜像的意思,也是会执行一系列操作,属于最后一个步骤,所以耗时几乎是最短的了。但有个前提,它的所有操作都是针对release目录下的内容。 makeimg会执行reg、bib等的合并操作,但都是对release目录下的,比如platform.reg common.reg project.reg 三个合并成一个reginit.ini,明白了这一点就好办了。 对于上面所说的第(4)种情况,也就是只改动reg或bib文件,最快速的方法是: 直接修改release目录下的platform.reg、platform.bib,把需要的文件拷贝到release目录下,然后makeimg即可。 如果确定生效了,再到%myplatform%下修改,以防不小心执行了其他操作把release下的修改的东西给覆盖了。 三、最后贴一个公司里其他人用的一个bat文件,用时最少,我看不懂,这里不解释。 适用情况好像是修改%myplatform%下的源码文件,特别是修改了PLATFORM/COMMON/SRC/SOC/的情况。 懂的人请不吝赐教。 (里面的参数需要根据自己的平台设置一下) call cls set WMxxx=I:/wm604 set MyPlatform=DracoBSP set Version=Retail setlocal pushd I: cd %WMxxx%/BuildScripts/WPC_%MyPlatform%_%Version%/ call baseOSEnv.bat cd %WMxxx%/PLATFORM/COMMON/SRC/SOC/ call build cd %WMxxx%/platform/%MyPlatform% call build REM %_FLATRELEASEDIR%/%_TGTPLAT%.cfg.xml REM %_FLATRELEASEDIR%/%_TGTPLAT%.sku.xml call packagegenerator packages.pkd.xml.merged call dskimage %MyPlatform%.cfg.xml %MyPlatform%.sku.xml cd %WMxxx%/PLATFORM/%MyPlatform%/FILES call postdiskimage popd endlocal pause |