Mtk功能机,项目编译与宏控制

2018-11-05  本文已影响0人  Guoke24

流程简介

声明一个开关

    POS_XXX_APP = TRUE

检测到开关,定义宏

第一个宏
    ifdef POS_XXX_APP
      ifeq ($(strip $(POS_XXX_APP)),TRUE)
        COM_DEFS    += __POS_XXX_APP__
      endif
    endif

代码逻辑:如果打开了开关:POS_XXX_APP ,定义宏:

__POS_XXX_APP__
第二个宏
// 第一处,定义加MMI前缀的宏
#if defined(__POS_XXX_APP__)
    #ifndef __MMI_POS_XXX_APP__
    #define __MMI_POS_XXX_APP__
    #endif
#endif
__MMI_POS_XXX_APP__

到此,宏定义完成,接着是用宏控制代码的引入编译

以 TOPQRPAY 这个应用为例,定义的宏为:

 __MMI_POS_TOPQRPAY_APP__
头文件和源码文件的引入编译:
    ifneq ($(filter __MMI_POS_TOPQRPAY_APP__ , $(strip $(MODULE_DEFS))),)
        SRC_LIST += plutommi\mmi\TopQRPay\TopQRPaySrc\TopQRPayMain.c \
                    plutommi\mmi\TopQRPay\TopQRPaySrc\TopQRPayScrnInquiry.c \
                    。。。。。。
                    plutommi\mmi\TopQRPay\TopQRPaySrc\TopQRPayNfcSearch.c
    endif
    
    ifneq ($(filter __MMI_POS_TOPQRPAY_APP__ , $(strip $(MODULE_DEFS))),)
        INC_DIR += plutommi\mmi\TopQRPay\TopQRPayInc
    endif

    ifneq ($(filter __MMI_POS_TOPQRPAY_APP__ , $(strip $(MODULE_DEFS))),)
        SRC_PATH += plutommi\mmi\TopQRPay\TopQRPaySrc
    endif 
资源文件的引入:
    #ifdef __MMI_POS_TOPQRPAY_APP__
    MMI_RES_DECLARE(APP_ID_TOPQRPAY, 400, ".\\MMI\\TopQRPay\\TopQRPayRes\\")
    #define TOPQRPAY_BASE                    ((U16) GET_RESOURCE_BASE(APP_ID_TOPQRPAY))
    #define TOPQRPAY_BASE_MAX                ((U16) GET_RESOURCE_MAX(APP_ID_TOPQRPAY))
    #endif
资源文件的id声明
#include "mmi_features.h"
#include "custresdef.h"

/* Need this line to tell parser that XML start, must after all #include. */
<?xml version="1.0" encoding="UTF-8"?>

<APP id="APP_ID_TOPQRPAY">

    <INCLUDE file="mmi_rp_app_mainmenu_def.h"/>
    <INCLUDE file="GlobalResDef.h,SettingResDef.h,GlobalMenuItems.h"/>
    <INCLUDE file="Mmi_rp_all_defs.h"/>

    <STRING id="TOPQRPAY_STR_ID_XIAOFEI"/>
    <STRING id="TOPQRPAY_STR_ID_XIANJIN"/>
    。。。。。。
    <SCREEN id="SCREEN_ID_TOPQRPAY_MAINMENU"/>
    <SCREEN id="SCREEN_ID_CONSUME_MAIN"/>
    。。。。。。
    <TIMER id="TIMER_LOGIN_TIMEROUT_ID"/>
    。。。。。。
    <IMAGE id="IMAGE_ID_TOPQRPAY_UNIONPAY_ICON">CUST_IMG_PATH"\\\\MainLCD\\\\TopQRPay\\\\union_icon.png"</IMAGE>
    <IMAGE id="IMAGE_ID_TOPQRPAY_MAINMENU_BG">CUST_IMG_PATH"\\\\MainLCD\\\\TopQRPay\\\\topqrpay_mainmenu_bg.jpg"</IMAGE>
    。。。。。。
    <AUDIO id="AUD_ID_AMOUNT_NUM_0" flag="MULTIBIN">CUST_ADO_PATH"\\\\Amount\\\\tts_0.mp3"</AUDIO>
    <AUDIO id="AUD_ID_AMOUNT_NUM_1" flag="MULTIBIN">CUST_ADO_PATH"\\\\Amount\\\\tts_1.mp3"</AUDIO>
    。。。。。。
    <CACHEDATA type="short" id="NVRAM_SAOMA_DATASIZE" restore_flag="TRUE">
    <DEFAULT_VALUE> [0x00, 0x00] </DEFAULT_VALUE>
    </CACHEDATA>
    。。。。。。
    <MENU id="MENU_ID_LOGIN_TIME_SETTING_MENU" type="APP_SUB" str="TOPQRPAY_STR_ID_LOGIN_TIMEOUT">
        <MENUITEM_ID>TOPQRPAY_MENU_ID_LOGIN_SETTING_2_MIN</MENUITEM_ID>
        。。。。。。
    </MENU>

    <MENUITEM id="TOPQRPAY_MENU_ID_LOGIN_SETTING_2_MIN" str="TOPQRPAY_STR_ID_SLK_2_MIN"/>
    。。。。。。
    <RECEIVER id="EVT_ID_GPIO_LCD_SLEEP_OUT" proc="topqrpay_mmi_lcd_sleep_out_handler"/>
</APP>

然后就是在.h和.c文件中,用宏控制代码段是否引入编译

上一篇下一篇

猜你喜欢

热点阅读