在WINCE的产品开发过程中可能会遇到修改PUBLIC下代码的情况,由于PUBLIC下的代码进行build之后生成的是相应的.lib文件,要在Sysgen阶段才能生成相应的DLL文件,修改完成后通过Build and Sysgen Current Project要用掉近十分钟的时间才能编译中相应的DLL(我的机器配置不怎么样),然后再进行make生成NK或者XIP,如果是边调试边修改实在是浪费太多时间,几个月前我修改USBFN的代码就是如此,刚刚找到一种快速编译修改PUBLIC代码的方法,实践了一下效率很高,拿我的USBFN的Mass Storage为例进行详细说明:
1、将PUBLIC目录下的USBFN文件夹复制到我的BSP的drivers中的USB文件夹中,USBFN的CLASS中只保留STORAGE就可以,并修改相应dir文件。
2、通过PB的Open Release directory输入命令设置路径到
WINCE500/PLATFORM/XXX/Src/Drivers/Usb/USBFN//STORAGE/TRANSPORT/BOT
输入命令sysgen_capture usbmsfn回车,这时在BOT目录下产生一个sources.usbmsfn内容如下:
TARGETNAME=usbmsfn
TARGETTYPE=DYNLINK
RELEASETYPE=PLATFORM
SYNCHRONIZE_DRAIN=1
DLLENTRY=DllEntry
DEFFILE=$(_PUBLICROOT)/common/oak/lib/$(_CPUINDPATH)/usbmsfn.def
SOURCELIBS=
TARGETLIBS=/
$(_PUBLICROOT)/common/oak/lib/$(_CPUINDPATH)/usbmsfn_lib.lib /
$(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/scsi2dad.lib /
$(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/ufnclientlib.lib /
$(_PUBLICROOT)/common/oak/lib/$(_CPUINDPATH)/storeapi.lib /
$(_SYSGENSDKROOT)/lib/$(_CPUINDPATH)/coredll.lib
SOURCES=
$(_PUBLICROOT)/common/oak/lib/$(_CPUINDPATH)/usbmsfn_lib.lib /是PB在sysgen过程中生成USBMSFN.DLL时需要的库,将此行删除。并按照此目录下原有的sources文件把相应的源文件和头文件加进来。最后用修改过的sources.usbmsfn替换掉原的有sources。
3、完成以上工程后像编译BSP中的其它driver一样选中Clean before building执行build current project,只需要几秒钟就可以生成新的usbmsfn,dll,再make run time image就可以了。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Veabol/archive/2009/10/12/4658201.aspx
实践证明,$(_PUBLICROOT)/common/oak/lib/$(_CPUINDPATH)/usbmsfn_lib.lib不用删,也不用再额外加
源文件即可生成dll文件。