Android CMake 编译传递宏定义参数
音视频开发进阶
共 1379字,需浏览 3分钟
· 2021-10-11
在做 C++ 需求开发时经常会遇到用宏定义来区分不同版本、不同平台的功能,如下所示:
#ifdef DEBUG
// 调用 debug 版本方法
#elif RELEASE
// 调用 release 版本方法
#endif
在 debug 和 release 版本对应的方法是不一样的,所以要用宏来隔开。
那么问题来了,这个宏定义参数是如何传递过来的?
下面会介绍两种方式来传递宏定义参数:
gradle 中传递宏参数
gradle 中传递宏参数直接在 build.gradle 中定义就行,如下所示:
externalNativeBuild {
cmake {
cppFlags '-std=c++14','-DCUSTOM_MACRO=1'
}
}
定义了宏 CUSTOM_MACRO ,并且值为 1 ,由于宏定义主要是作为开关使用的,所以它的值一般不是 0 就 1 。
另外要注意宏定义的语法,在宏定义前面要加大写符号 D ,还有一个横线 - 符号别忘了。
具体使用如下代码所示:
#ifdef CUSTOM_MACRO
hello = "Hello from Custom Macro";
#endif
cmake 中定义宏参数
另一种方式直接在 CMakeLists.txt 文件中去定义宏参数。
借助 CMake 的 add_definitions 方法可以定义宏,同时也可以使用 remove_definitions 方法去取消宏定义。
代码如下所示:
add_definitions(-DCMAKE_DEFINITIONS=1)
// 取消宏定义
// remove_definitions(-DCMAKE_DEFINITIONS=1)
在 C++ 也可以直接使用这个宏:
#ifdef CMAKE_DEFINITIONS
hello = "Hello from CMake Definitions";
#endif
小结
以上就是 CMake 编译传递宏定义参数的两种方式,简单而又使用的小技巧。
更多 NDK 开发内容欢迎观看我录制的免费慕课网视频:
更多技术文章欢迎阅读:
Android JNI 基础知识 Android JNI 数组操作 Android 通过 JNI 访问 Java 字段和方法调用 Android 通过 JNI 调用 Java 类的构造方法和父类的方法 Android JNI 调用时缓存字段和方法 ID Android JNI 中的引用管理 Android JNI 调用时的异常处理 Android JNI 中的线程操作 Android JNI 之 Bitmap 操作
技术交流,欢迎加我微信:ezglumes ,拉你入技术交流群。
推荐阅读:
觉得不错,点个在看呗~
评论
李彦宏:开源大模型不如闭源,后者会持续领先;周鸿祎:“开源不如闭源” 的言论是胡说八道
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁0、李彦宏:开源大模型不如闭源,后者会持续领先当今
源码共读
0
运营知识普及(定义、本质、职责、步骤)
█ 运营的定义运营可以分为广义和狭义两个方面,每个方面它的概念是不一样的。广义上,运营就是围绕产品做的一切人为干预,运营的基础是产品。这时候,运营基本上可以分为三大块——销售、服务、营销。销售:把产品销售出去。大客户运营、商业运营等等一般本质都是销售。服务:在产品和用户之间做一个个连接。运
产品与体验
0
人工智能周刊#17:Llama3、微调 LLMs 的 PyTorch 原生库、李彦宏内部讲话、900 个最受欢迎的AI 工具
在内部讲话中,李彦宏对大模型开源与闭源的路线选择,以及 AI 创业者应该专注模型还是应用等业界焦点话题,发表了自己的看法。人工智能周刊:关注Python、机器学习、深度学习、大模型等硬核技术本期目录:1、Meta 最新发布 Llama 3 80 亿和 700 亿参数版本2、「抱抱脸」公
机器学习算法与Python实战
10
再获殊荣!乐普新品平板多参数监护仪荣获两项国际大奖
近日,乐普新品平板多参数监护仪AIView VX凭借创新前瞻的设计理念及卓越不凡的产品体验,一举斩获“2024年德国iF设计奖”和“2024年德国红点奖”两项国际大奖,再度彰显乐普独特产品魅力及研发与工业设计的强大实力。作为国际公认的全球工业设计顶级奖项,红点设计奖与德国“iF奖”、美国“IDEA奖
乐普医疗AI
1
Nat. Commun. | gLM:基于宏基因组预训练语言模型的基因和蛋白调控及功能预测算法
2024年4月3日,Peter R. Girguis、Sergey Ovchinnikov、Yunha Hwang、Andre L. Cornman和Elizabeth H. Kellogg几人在Nature Communications上发表了一篇题为“Genomic language model
生信宝典
0
台大李宏毅老师新课:生成式人工智能导论
来源:NewBeeNLP本文约500字,建议阅读3分钟本文为你推荐台大李宏毅老师的新课:《生成式人工智能导论2024》推荐台大李宏毅老师的新课:《生成式人工智能导论2024》课程主页:https://speech.ee.ntu.edu.tw/~hylee...
数据派THU
0
电子书丨《Android Jetpack应用指南》
▊《Android Jetpack应用指南》叶坤 著电子书售价:39.5元2020年07月出版本书讲解的是Android Jetpack最核心的内容—架构。第1章将对Jetpack做一个大致的介绍。第2章至第9章,将分别详细介绍为搭建MVVM架构而设计...
博文视点Broadview
0
史上最大开源LLM,参数高达3140亿!马斯克如约开源Grok,10小时狂揽10000颗Star
架构师大咖 架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。 公众号该公众号已被封禁气「OpenAI 不 Open」以至于对其发起诉讼之后,马斯克践行自己自由、开放的...
iOS开发
0