Vs2012在Linux开发中的应用(7): 编译UBOOT

在完成前一节所述的操作后,我们就可以尝试在VS下编译UBOOT了。

我们仅仅需要改写项目中的make.py:

#user code begin

classCUBootMake:

error=False

defBuild(self,chan):

self.error=False

exec_command(chan,

"cd/work/projects/hi3516dvs_2v/u-boot/v1/u-boot-2010.06 && "

"makeARCH=arm CROSS_COMPILE=arm-hisiv100-linux-uclibcgnueabi- && "

"cp../tools/mkboot.sh . && chmod 777 mkboot.sh && "

"cp../tools/reg_info.bin . &&"

"./mkboot.shreg_info.bin u-boot-ok.bin && "

"cpu-boot-ok.bin /var/lib/tftpboot/ && echo xxxxxxxxx\n")

returnnotself.error;

defRebuild(self,chan):

returnTrue

defClean(self,chan):

returnTrue

cur_dir=’.’

defConvert(self,ln):

ifre.match(".*Entering directory",ln):

idx1=ln.find("`")

ln2=ln[idx1+1:]

self.cur_dir=ln2[:len(ln2)-2]+’/’

self.cur_dir=self.cur_dir.replace(HOST_SHARE_ROOT,HOST_SHARE_ROOT_WIN)

self.cur_dir=self.cur_dir.replace(‘/’,’\\’)

elifre.match(".*:[0-9]+: error:",ln):

lst=ln.split(‘:’)

file=self.cur_dir+lst[0]

ln=file+"("+lst[1]+"): error C2004: "+lst[3]

self.error=True

elifre.match(".*:[0-9]+: warning:",ln):

lst=ln.split(‘:’)

file=self.cur_dir+lst[0]

ln=file+"("+lst[1]+"): warning C2005: "+lst[3]

elifre.match(".*:[0-9]+: undefined reference",ln):

lst=ln.split(‘:’)

file=lst[0].replace(HOST_SHARE_ROOT,HOST_SHARE_ROOT_WIN)

file=file.replace("/","\\")

ln=file+"("+lst[1]+"): error C2007: "+lst[2]

self.error=True

elifre.match("make\[[0-9]+\]:.*Error [0-9]",ln):

self.error=True

returnln

defGetHostPattern(self):

return".*\["+HOST_USER+"@localhost .*\]\$.*"

make=CUBootMake()

#user code end

在这个python脚本中,我们改写了Build操作和Convert操作。在Build操作中主要是执行登录后的编译命令。而在Convert操作中则完成了错误字符串的转换。

看看VS的反应:

正确定位到了错误的文件和行号!

至于Rebuild和Clean操作就比较简单了,不再重复。

这里唯一需要注意的是如果我们将包含目录直接指向Linux下的共享目录会导致VS在进行代码分析时速度较慢,因而我们可以将include目录复制一份到windows的本地目录,这样就足够快了!

人要有梦想,有了梦想才会努力奋斗,

Vs2012在Linux开发中的应用(7): 编译UBOOT

相关文章:

你感兴趣的文章:

标签云: