zoukankan      html  css  js  c++  java
  • 在mmp中判断SDK平台版本(转)

    在mmp中判断SDK平台版本

    16已有 475 次阅读  2010-02-24 10:38   标签:  mmp  SDK  平台  判断 
    Coastline@Devdiv.net
    转载请注明出处

    相信在mmp中如何区分SDK平台版本,是很多朋友想做到的吧,遗憾的是到目前为止,还没有找到解决方案。
    近日和同事提及这个问题的时候,我说可以用makefile来做,只是我对makefile的语法一知半解,一时也不想折腾了。同事Harry哥哥是Linux牛人,他说他来搞,结果很快就搞出来了。呵呵,所以这个解决方案很大程度上是他的功劳。我只是整理了一下代为发帖和大家分享。

    下面介绍原理和步骤:

    Epoc32\include\variant\下,有一个hrh文件(不同SDK版本可能这个hrh文件名也不同),里面定义了该SDK所使用的宏。本来如果Symbian想得周到一点的话,他大可以在这个hrh中放置一枚每个SDK唯一的宏,可是他没有这么做。现在我们就是要代替他做这个工作,一旦有了唯一的宏,我们就能在mmp中利用这个宏来区分5版了。
    我们利用makefile检查SDK的安装路径,如果包含"S60_5th"字串,则判断为第五版SDK,虽说这个判断逻辑不是100%正确,但对于实际情况已经足够准确了,我想没有哪个家伙会闲得蛋疼把S60_5th这个字串也改了吧。
    如果是第五版SDK,则在symbian_os.hrh中追加一个宏,这个宏就能在mmp中使用了。
    思路就是这样。

    1.从你第五版SDK的Epoc32\include\variant\下拷贝symbian_os.hrh文件至工程的bld.inf所处目录(一般都是group目录),并改名为symbian_os_mod.hrh以示区分。
    编辑这个symbian_os_mod.hrh文件,在最后加上
    /**
     * modified by Coastline
     * you can use the following macro to determine S60_5th in mmp
     */
    #ifndef S60_5TH
    #define S60_5TH
    #endif

    2.在bld.inf所处目录新建DetermineSDKVersion,mk文件,内容如下:
    # ============================================================================
    #  Name  : DetermineSDKVersion.mk
    #  Part of  : 
    #  Author : Coastline
    #  Description: 
    # ============================================================================
    do_nothing :
    @rem do_nothing

    MAKMAKE : do_nothing

    BLD : do_nothing
    ifeq (S60_5th,$(findstring S60_5th, $(EPOCROOT)))
    @echo ----------symbian_os.hrh replaced----------
    copy symbian_os_mod.hrh $(EPOCROOT)\epoc32\include\variant\symbian_os.hrh
    endif

    CLEAN : do_nothing

    LIB : do_nothing

    CLEANLIB : do_nothing

    RESOURCE : do_nothing

    FINAL : do_nothing

    3.在bld.inf中加上下面两行:
    PRJ_MMPFILES
    gnumakefile DetermineSDKVersion.mk
    注,这两行最好放在你实际所使用的mmp之前。

    4.可以在项目的mmp中使用S60_5TH这个宏:
    #ifdef S60_5TH
    LIBRARY OOXX.lib
    #else
    LIBRARY XXOO.lib
    #endif
    接下来分别使用五版、三版SDK编译看看,是不是可以啦,从此不用在切换SDK后手工在mmp中改动了,爽。

    5.对于某些有洁癖的程序员哥哥,可以改进那个makefile,在CLEAN 分支对hrh文件作还原操作。不过这显然没有什么必要。
  • 相关阅读:
    python基本数据类型之整型和浮点型
    Java学习路线
    Linux学习笔记之VIM
    Java基础之流程控制
    Linux学习笔记之Shell
    Java基础之数据类型
    论文提交说明
    IDEA安装教程
    Link summary for writing papers
    1 类基础知识
  • 原文地址:https://www.cnblogs.com/yaoliang11/p/1862654.html
Copyright © 2011-2022 走看看