MTK一套代码多项目实现

考虑生产效率,一般设计公司总是尽量在一套代码上开发,便于利用以前代码,减少工作量。

这就要考虑怎样组织代码,使多个项目共存在一套代码里。

我们以前的方法是把不能共存的代码放一个分支上,使用时,先拉主干,再拉分支。

但这样有个问题,主干改了,如果分支跟这个修改有关系,就要更新,光拉出这些分支,查看是否修改工作量就很大,而且合在一起后的代码提交SVN要人为判断提交主干还是分支,分支还要再拉一份修改提交,提交麻烦,容易出错。

现在我按MTK的代码组织方式,写个批处理,建个新项目,需要copy的代码都复制一份,多个项目都在一套代码里,不用弄分支覆盖,修改提交方便,而且更新代码也方便。

creatProject.bat:

set PRJ_NAME=%1%
set SRC_NAME=%2%
@echo off
pause
REM ---------------------------
echo ---1
if not exist custom\app\%SRC_NAME%_BB goto myend
cd  custom\app
xcopy %SRC_NAME%_BB %PRJ_NAME%_BB /I/E/Y
cd ..\..\


echo ---2
if not exist custom\audio\%SRC_NAME%_BB goto myend
cd  custom\audio
xcopy %SRC_NAME%_BB %PRJ_NAME%_BB /I/E/Y
cd ..\..\


echo ---3
if not exist custom\meta\%SRC_NAME%_BB goto myend
cd  custom\meta

xcopy %SRC_NAME%_BB %PRJ_NAME%_BB /I/E/Y
cd ..\..\

echo ---4
if not exist custom\ps\%SRC_NAME%_BB goto myend
cd  custom\ps
xcopy %SRC_NAME%_BB %PRJ_NAME%_BB /I/E/Y
cd ..\..\


echo ---5
if not exist custom\system\%SRC_NAME%_BB goto myend
cd  custom\system
xcopy %SRC_NAME%_BB %PRJ_NAME%_BB /I/E/Y
cd ..\..\


echo ---6
if not exist custom\drv\bluetooth\%SRC_NAME%_BB goto myend
cd  custom\drv\bluetooth
xcopy %SRC_NAME%_BB %PRJ_NAME%_BB /I/E/Y
cd ..\..\..\


echo ---7
if not exist custom\drv\camera\%SRC_NAME%_BB goto myend
cd  custom\drv\camera
xcopy %SRC_NAME%_BB %PRJ_NAME%_BB /I/E/Y
cd ..\..\..\


echo ---8
if not exist custom\drv\misc_drv\%SRC_NAME%_BB goto myend
cd  custom\drv\misc_drv
xcopy %SRC_NAME%_BB %PRJ_NAME%_BB /I/E/Y
cd ..\..\..\


echo ---9
if not exist custom\drv\LCD\%SRC_NAME%_LCM goto myend
cd  custom\drv\LCD
xcopy %SRC_NAME%_LCM %PRJ_NAME%_LCM /I/E/Y
cd ..\..\..\


echo ---10
if not exist plutommi\Customer\CustResource\%SRC_NAME%_MMI\MMI_features_switch%SRC_NAME%.h goto myend
cd  plutommi\Customer\CustResource
xcopy %SRC_NAME%_MMI %PRJ_NAME%_MMI /I/E/Y
cd %PRJ_NAME%_MMI
ren MMI_features_switch%SRC_NAME%.h MMI_features_switch%PRJ_NAME%.h
cd ..\..\..\..\


echo ---11
if not exist plutommi\Customer\Images\Project md plutommi\Customer\Images\Project
cd plutommi\Customer\Images\Project
md %PRJ_NAME%
cd %PRJ_NAME%
md A
cd ..\..\..\..\..\


echo ---12
cd make
if not exist %SRC_NAME%_GPRS.mak goto myend
if not exist Verno_%SRC_NAME%.bld goto myend
copy %SRC_NAME%_GPRS.mak %PRJ_NAME%_GPRS.mak
copy Verno_%SRC_NAME%.bld Verno_%PRJ_NAME%.bld
cd ..


echo 生成完毕,注意修改以下文件:
echo %PRJ_NAME%_GPRS.mak
echo Verno_%PRJ_NAME%.bld
echo MMI_features_switch%PRJ_NAME%.h
goto no_error_end
:myend
echo !!! Error, break!
:no_error_end
pause
@echo on

添加的代码还要提交到svn,也编一个批处理:

newProjectToSvn.bat:

set PRJ_NAME=%1%
TortoiseProc.exe /command:add /path:"custom\app\%PRJ_NAME%_BB*custom\audio\%PRJ_NAME%_BB*custom\meta\%PRJ_NAME%_BB*custom\ps\%PRJ_NAME%_BB*custom\system\%PRJ_NAME%_BB*custom\drv\bluetooth\%PRJ_NAME%_BB*custom\drv\camera\%PRJ_NAME%_BB*custom\drv\misc_drv\%PRJ_NAME%_BB*custom\drv\LCD\%PRJ_NAME%_LCM*plutommi\Customer\CustResource\%PRJ_NAME%_MMI*make\%PRJ_NAME%_GPRS.mak*make\Verno_%PRJ_NAME%.bld" /closeonend:0
rem xxx

之所以没用svn命令,因为一般没人装那个,用tortoiseSVN的比较多。

最好用干净的目录生产新项目,避免copy一些无用的文件,代码里跟项目宏有关的地方还要修改,添加一些定义。

实际工作中还可以写个批处理,把不是我们当前工作项目的目录清除,代码看起来就清爽多了。

这样组织的缺点就是会在驱动目录建立很多目录,添加许多文件,而这些文件并不一定要修改。

一个项目大概要添加108个文件。






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值