快速编译修改过的PUBLIC代码

来源:互联网 发布:武汉核运行研究所 知乎 编辑:程序博客网 时间:2024/06/06 13:20

在WINCE的产品开发过程中可能会遇到修改PUBLIC下代码的情况,由于PUBLIC下的代码进行build之后生成的是相应的.lib文件,要在Sysgen阶段才能生成相应的DLL文件,修改完成后通过Build and Sysgen CurrentProject要用掉近十分钟的时间才能编译中相应的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就可以了。