在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文件中,能够用到的宏?
已知的宏有:
mk文件中能否定义变量?
答案是能。直接写 var=xxxxx就可以了,需要包含宏时,注意使用$()来包含。
mk文件中,自带的函数都有哪些?
由于没找到资料,只能通过一些示例的mk文件来猜测。
关于通过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中的某些东西有关系。如果说错了,欢迎大家指正,以求共同提高。
如何加入自定义的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中的某些东西有关系。如果说错了,欢迎大家指正,以求共同提高。