在symbian工程中使用mk文件

在symbian中,我们可以自由加入自己的mk文件。 mk(MakeFile)文件包含了独立于编译连接过程之外的步骤,大家最熟悉的,在3rd的sdk中的HelloWorld示例中,有一个Icons_scalable_dc.mk的文件,作用是生成图标 ; 在carbide.C++里新建工程模板中,也有一个生成帮助文件的mk文件。

如何加入自定义的mk文件?
在bld.inf中,加入gnumakefile xxx.mk即可。 

mk文件中,能做什么?
mk文件定义了abld的若干个过程需要进行的额外操作。 
常用的是:MAKMAKE,BLD,CLEAN,FREEZE等过程。
后面的do_nothing其实是mk文件前面定义的一个过程:do_nothing :     @rem do_nothing , 其实就是一个注视行。

mk文件中,能够用到的宏? 
已知的宏有: $(EPOCROOT),$(PLATFORM), $(CFG)
可能的取值:

$(EPOCROOT)=/Symbian/8.0a/S60_2nd_FP2_CW/

$(PLATFORM)=WINS, WINSCW,THUMB,ARMI,GCCE,ARMV5 
$(CFG)=UDEB , UREL

mk文件中能否定义变量?

答案是能。直接写   var=xxxxx就可以了,需要包含宏时,注意使用$()来包含。

mk文件中,自带的函数都有哪些? 
由于没找到资料,只能通过一些示例的mk文件来猜测。
echo: 负责显示一行文字。
ifeq:判断参数中的字符串是否匹配。  

给大家的一个建议:

因为symbian环境中必装perl,
我们可以在mk中,通过批处理文件,运行perl脚本。仿照symbian的做法,在cmd中传递某些参数,然后在perl中进行解析,并进行具体的操作。 对于每一个项目环境中,可以分别写一个perl脚本。当然也可以写一个通用脚本~
关于通过bat调用perl的方法:

mk文件中的关键内容:
call xxx.bat $(EPOCROOT) $(PLATFORM) $(CFG)

xxx.bat文件中的内容: 
perl -S xxx.pl %1 %2 %3 %4 %5 %6 %7 %8 %9

xxx.pl文件中的内容:(简单显示传递的参数)
printf "---------------------------------------/n";
my $epocRoot=$ARGV[0];
my $platform=$ARGV[1];
my $cfg=$ARGV[2];
printf "/$epocRoot=$epocRoot/n";
printf "/$platform=$platform/n";
 printf "/$cfg=$cfg/n";
printf "---------------------------------------/n";


ps: 最近刚开始熟悉mk,怀疑和linux中的某些东西有关系。如果说错了,欢迎大家指正,以求共同提高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值