我们经常会遇到多个项目使用同一工程的情况,对于android源码,动辄就几十G,采用建立多个工程显然不可取。只能考虑添加板级来解决改问题。板级的关键在于通过lunch选项,选择不同的板级,最终选择编译不同的文件。上面提到“选择编译”,选择就涉及到.config里面的配置选项,编译就涉及到Makefile。关于.config,menuconfig, def_config, Kconfig的相关问题,可以参考如下链接:https://blog.csdn.net/zhouxiangbai/article/details/54693476

我的工程希望实现的目标是,通过lunch 选择3个不同项目进行编译。lunch选择不同项目对kernel的影响是选择了不同的def_config,我会在def_config中设置我想要默认为y的CONFIG选项。

关于我的工程设置:
在我们执行make menuconfig命令时,会读取各级Kconfig的内容,arch/arm/Kconfig 负责生成最顶层的menuconfig界面的内容。所以我在arch/arm/Kconfig 加入了如下内容:

# add for 3 different project
menu "Test Project Select"
config TEST_OEM_BOARD_PROJECTbool "Support for test OEM Board project"default nhelpThis is for test oem board project select or not.config TEST_TOY_BEAR_PROJECTbool "Support for test Toy Bear project"default nhelpThis is for test toy bear project select or not.config TEST_CUP_PROJECTbool "Support for test Cup project"default nhelpThis is for test Cup project select or not.
endmenu

以上选项的默认值设为n,就是默认不选择,为的是通过在不同的def_config文件中决定它是否选择。比如,在def_config中设置了CONFIG_TEST_TOY_BEAR_PROJECT为y,则CONFIG_TEST_TOY_BEAR_PROJECT=y会被各级Makefile识别到,从而根据这个选项来条件编译不同的文件。

在三个工程中,我希望编译不同的dts文件。则只需要在arch/arm/boot/dts/qcom/Makefile文件中加入如下内容:

ifeq ($(CONFIG_TEST_OEM_BOARD_PROJECT),y)
dtb-$(CONFIG_ARCH_MSM8909) += msm8909-pm8916-mtp.dtb \msm8909-mtp.dtb
else
ifeq ($(CONFIG_TEST_CUP_PROJECT),y)
dtb-$(CONFIG_ARCH_MSM8909) += msm8909-pm8916-mtp-test-cup.dtb \msm8909-mtp-test-cup.dtb
else
ifeq ($(CONFIG_TEST_TOY_BEAR_PROJECT),y)
dtb-$(CONFIG_ARCH_MSM8909) += msm8909-pm8916-mtp-test-toy-bear.dtb \msm8909-mtp-test-toy-bear.dtb
endif
endif
endif

这样就实现了lunch不同项目,选择不同def_config,最终选择编译不同的文件。

假如在其他文件夹下还有其他需要选择编译的文件,也只需要修改相应的Kconfig,并在def_config中添加默认值即可。比如:在TEST_CUP_PROJECT和TEST_TOY_BEAR_PROJECT中需要分别编译leds_test_cup.c和leds_test_toy_bear.c文件。则,我们需要在drivers/leds/Kconfig文件加入如下行:

#jiang add for Jeejio cup leds driver
config LEDS_JEEJIO_CUPbool "Support for Jeejio Cup Leds"default nhelpThis is for jeejio Cup leds driver select.#jiang add for Jeejio toy bear leds driver
config LEDS_JEEJIO_TOY_BEARbool "Support for Jeejio Toy Bear Leds"default nhelpThis is for jeejio toy bear leds driver select.

同时在def_config中添加:

CONFIG_LEDS_JEEJIO_CUP=y

CONFIG_LEDS_JEEJIO_TOY_BEAR=y

对于Android不同项目使用同一工程时的板级设置相关推荐

  1. Android Studio 项目打包成apk时 Signature Version 的选择

    在第一次进行apk打包时,点击Build->Generate Signed APK,选择好之后按Next后,有一个Signature Versions的选项. 图1 生成APK前的最后一步 在完 ...

  2. Unity Android Studio项目 快速接入GA,Adjust SDK 并自动设置GooglePlay要求

    视频教程 Unity 快速接入GA和Adjust实例 - 工具在简介区 案例DEMO 源码 码云 麻烦点颗小星星~

  3. Android导入一个工程时提示 Invalid project description的解决方法

    今天在网上下了个源码,导入的时候发现出现Invalid project description的提示,翻译成中文就是"无效的项目描述"的意思,搞不明白遂百度找到了解决办法,现记录并 ...

  4. android 测试工程 关闭混淆,混淆Android Test项目以及项目(在发布和混淆版本上运行测试)...

    在阅读赏金的评论之后,我意识到OP实际上只是提出了一些简单的是/否回复,所以我将把我的评论扩展到答案.一般来说,正确设计的proguard.cfg和项目结构足以防止这种困境. 典型的proguard配 ...

  5. idea导入android工程,idea怎样导入Android studio 项目?

    满意答案 s55f2avsx 2017.09.05 采纳率:46%    等级:12 已帮助:5646人 新版Android Studio/IntelliJ IDEA可以直接导入eclipse项目,不 ...

  6. Android开源项目分类汇总-转载

    太长了,还是转载吧... 今天在看博客的时候,无意中发现了@Trinea在GitHub上的一个项目Android开源项目分类汇总,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有 ...

  7. Android开源项目分类汇总[转]

    Android开源项目分类汇总 如果你也对开源实现库的实现原理感兴趣,欢迎 Star 和 Fork Android优秀开源项目实现原理解析 欢迎加入 QQ 交流群:383537512(入群理由需要填写 ...

  8. Android开源项目--分类汇总

    为什么80%的码农都做不了架构师?>>>    转自:https://github.com/Trinea/android-open-project Android开源项目第一篇--个 ...

  9. GitHub上不错的Android开源项目(二)

    摘要:GitHub上的开源项目不胜枚举,通过这些项目,也能让开发者在应用开发过程中事半功倍,作为开发者的你,在用这些开源项目吗?今天我们将介绍另外20个在GitHub上备受欢迎的Android开源项目 ...

最新文章

  1. 提高工作效率必备神器
  2. 高级系统项目管理师笔记1
  3. 如何高效的编写与同步博客 (.NET Core 小工具实现)
  4. 全球最快65W闪充!OPPO Reno Ace正式发布 高达限量定制版售价仅3599元
  5. 不可阻挡的PowerShell :Red Teamer告诉你如何突破简单的AppLocker策略
  6. 数组排列组合算法汇总
  7. iOS setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key 问题
  8. 游戏环境检测工具_自带基准测试的游戏大作盘点
  9. GB2312和ASCII码点阵字库HZK, ASC整理
  10. 全国计算机等级考试一级模拟考,全国计算机等级考试一级模拟试题一
  11. Java小游戏中加背景音乐--有图有真相
  12. linux 操作系统:setenv
  13. 创建git仓库(简易局域网版)
  14. 数据库having的用法详细介绍
  15. BULK INSERT如何将大量数据高效地导入SQL Server
  16. 英伟达 GTC 中国站明日开幕,又将揭秘哪些黑科技?
  17. ​草莓熊python绘图(春节版,圣诞倒数雪花版)附源代码
  18. php采集网页 alpha版
  19. 抖音计算机系表白,抖音最火的表白小情话50句
  20. 20155305乔磊2016-2017-2《Java程序设计》第六周学习总结

热门文章

  1. C++删除字符串中所有空格
  2. 灰狼优化(GWO)算法的8种中文变体(含MATLAB代码)
  3. 安装宝塔并修改宝塔安装路径
  4. 个人账号密码管理体系(账号篇)
  5. 【正点原子STM32连载】第五十七章 USB读卡器(Slave)实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  6. 每月一书(202211)天幕红尘
  7. Excel 熟练操作不为人知的技能
  8. python学习日记2-3周
  9. 爹1 战地1 无法连接origin 无法登陆
  10. Halcon图像处理-环形显示拉伸