分享
 
 
 

利用perl脚本帮助编译多环境下的多个symbian工程

王朝perl·作者佚名  2007-01-18
窄屏简体版  字體: |||超大  

有时候在多个平台下需要编译多个应用,自己去一个一个打控制台命令就觉得很麻烦,再加上环境变量的设置那就更麻烦了,特别是symbian这种版本很多的平台控制台命令又特别长的就特别严重。

symbian手机使用的平台对应的SDK比较典型的几个:

SDK1.2 SYMBIAN6.1 nokia NG QD,7650

SDK2.0 SYMBIAN7.0 nokia 6600

我们开发的程序当然希望所有的手机都能跑,但是在SDK2.0下面编译的界面程序是不能在symbian6.1平台下的跑的,如果你想写一个在S60下都能跑的APP应用,那么就必须要兼容以前的老界面库,你需要在SDK1.2(SDK0.9就不考虑了)的环境下编译这个APP,以便支持QD这类卖得很好又是6.1平台的手机。然而SDK1.2毕竟是老版本,缺少很多API的支持,写EXE类似的程序当然是SDK越新越好,因为调用的是系统底层函数,很少有6.1不支持的(老的SDK只是没有公开这些API)。

这就涉及到一个环境切换的问题,symbian有提供了一个解决方案,有一个叫environmentswitch.exe东西可以在开发环境之间切换,但是我个人感觉还是麻烦了,不太好用,所以试试了,环境切换其实可以直接通过修改环境变量的方法来解决,SDK安装后会在系统环境变量中加入一个叫EPOCROOT的值,用来指示当前使用的SDK,比如SDK1.2安装后会设置为\Symbian\6.1\Series60\,而SDK2.0安装后设置为\Symbian\7.0s\Series60_v20\,经过测试可以直接修改这个值来达到切换环境的目的。

另外一个比较麻烦的是有多个APP,DLL或者EXE需要编译,那么可能需要开很多个控制台来输入编译命令,加上参数又多,真是麻烦啊且很容易搞错了。所以就用perl来解决这两个问题吧,perl我不熟,只是为了解决这个小问题学了下,高手见笑了。

首先把自己的工程组织在一个目录下,比如\project\test1\, \project\test2\下面包含symbian的那堆目录groupinc,src什么的,假定test1需要用SDK1.2环境编译,test2需要用SDK2.0编译,然后开始写脚本。

#! ./perl

use Win32;

#

#这里是把stderr的输出重定向到当前目录下的err.txt中去(编译连接错误多了在控制台中看得眼花,当然你一直在IDE中编译不存在这个问题,如果是做移植这个方法我觉得还是很有用处)

#

open (stderr, ">err.txt") || die ("open stderr failed");

#

#工程表

#

@projectList = ('test1',

'test2');

#

#环境变量初值

#

$S60_70 = "\\Symbian\\7.0s\\Series60_v20\\";

$S60_61 = "\\Symbian\\6.1\\Series60\\";

#

#判断下参数数量,不对就打help

#

if (@ARGV < 1) {

print ("Not enough argument\r\n");

disHelp();

}

#

#第一个参数是编译平台我一般就用armi和thumb,不对就打help出来

#

$buildType = @ARGV[0];

if ($buildType cmp "armi" && $buildType cmp "thumb") {

print ("wrong argument : $buildType\r\n");

disHelp();

}

#

#再加个参数-c表示是否先clean一下

#

$cleanFlag = @ARGV[1];

if ($cleanFlag cmp "-c" && $cleanFlag cmp "") {

print ("wrong argument : $cleanFlag\r\n");

disHelp();

}

#

#开始循环编译所有的编译

#

for my $item (@projectList) {

#如果是test1就换成6.1的环境

if ($item eq "test1") {

changeEnvTo61();

}

else {

changeEnvTo70();

}

#如果有-c先clean一下

if ($cleanFlag eq "-c") {

print "#--------------------------------------------------------------#\r\n";

print " start to clean $item \r\n";

print "#--------------------------------------------------------------#\r\n";

system ("\\project\\$item\\group\\abld clean $buildType urel");

}

print "#--------------------------------------------------------------#\r\n";

print " start to build $item \r\n";

print "#--------------------------------------------------------------#\r\n";

system ("\\project\\$item\\group\\abld build $buildType urel");

}

#设置环境变量为6.1的

sub changeEnvTo61()

{

use Env qw(EPOCROOT);

undef $EPOCROOT;

$EPOCROOT .= $S60_61;

print ("change EPOCROOT = $EPOCROOT\r\n");

}

#设置环境变量为7.0的

sub changeEnvTo70()

{

use Env qw(EPOCROOT);

undef $EPOCROOT;

$EPOCROOT .= $S60_70;

print ("change EPOCROOT = $EPOCROOT\r\n");

}

#help

sub disHelp()

{

print "test.pl [CPU] [OPTION]\r\n";

print "[CPU]:\r\n";

print " armi\r\n";

print " thumb\r\n";

print "[OPTION]:\r\n";

print " -c : clean project first\r\n";

close (stderr);

exit(0);

}

#关闭stderr重定向

close (stderr);

到这就结束了,控制台中输入perl test.pl armi –c就可以先clean再编译这两个工程了,如果还嫌麻烦,再写个build.bat里面写上一句话perl test.pl %1 %2,调用的时候build armi –c就可以了,比以前打的命令少多了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有