编译脚本 区分编译不同代码

 

1、编译脚本auto_build.sh中

查找 配置文件product_feature.h 中的,如下内容,判断有没有 #define DEEP_SLEEP_NEW

有,编译deep_sleep_new.c

否则,编译deep_sleep.c

 

 

product_feature.h相关代码

#if (8456449 == PRODUCT_ID)

#undef PROD_IS_INPUT_DEVICE
#undef WATCH_DOG_ENABLE
#undef PROD_IS_INFRARED_SENSOR

#define PROD_SENSOR_RADAR
#define NO_FACTORY_TEST
#define NO_DTM_FACTORY_TEST
#define FEATURE_LOW_POWER
#define DEEP_SLEEP_NEW

// #define AGING_PHASE_HAVE_NUM     1
#endif

 

auto_build.sh相关代码

function prod_confs
{
    local prod=$1
    echo "prod="$prod
    find . -name product_feature.h | xargs awk '/^#if.*\('${prod}'.*==.*PRODUCT_ID\)'\$'/{b=1} /^#if/{if(b)c++;} /^#endif/{if(c) c--; if(!c) b=0;} {if(b) print}'
}

# check if deep_sleep_new is defined 
if prod_confs $PROD_ID | egrep -q "^#define.*DEEP_SLEEP_NEW" ; then
    deep_sleep_new=1
else
    deep_sleep_new=0
fi

echo "********************************************"
echo "deep_sleep_new=$deep_sleep_new"
echo "********************************************"

export PROD_ID="$PROD_ID"

命令解析:

find -name product_feature.h   #查找配置文件

xargs awk           #提取特征文本

'/^#if.*\('${prod}'.*==.*PRODUCT_ID\)'   #定位 #if (8456449 == PRODUCT_ID)

\$   #定位回车符

'/{b=1} /^#if/{if(b)c++;} /^#endif/{if(c) c--; if(!c) b=0;} {if(b) print}' #查找到enndif结束

2、区分编译

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值