android - Andriod.bp 文件中的编译器选项
问题描述
每个人。我正在尝试将 makefile 转换为 Android Q 的 .bp 文件,但我遇到了一些问题。
1)我不确定如何定义发布版本。以前在makefile中我只会写一些类似的东西:
MY_RELEASE_VERSION := $(shell cd $(LOCAL_PATH); git describe --always
--dirty) DSW_VERSION= \"$(MY_RELEASE_VERSION)\"
这将被定义为一个字符串,例如:DSW_VERSION="project_specific_3_0"
现在我可以在 .bp 中使用带有 DSW_VERSION 的 cppflag,但我发现无法像在 makefile 中那样获取它的值。就像是:
MY_RELEASE_VERSION = ["__builtin_func:shell cd <'LOCAL_PATH' unset>; git describe --always --dirty"]
CPPFLAGS = [
"DSW_VERSION = "\"MY_RELEASE_VERSION"\",
]
不工作。
其次,我在定义配置变体时遇到了问题,这反过来又会从源代码中定义一个变量。.mk 文件中的类似内容:
LOCAL_CPPFLAGS +=$(TARGET_CONFIG)
在代码中使用 ifdefine 如下所示:
#if defined (TARGET_ONE)
static const VAR = 1;
#elif defined (TARGET_TWO)
static const VAR = 2;
我尝试将 .bp 附加到 cppflags,类似于 :
cppflags: MY_CPPFLAGS + TARGET_CONFIG
,其中 MY_CPPFLAGS 是一个定义了所有需要的标志的变量,它不起作用
任何人都可以帮助我吗?
解决方案
您可以使用genrule
在构建时生成代码(例如,包含存储库版本的头文件)。查看Wayland Android.bp作为示例,了解 a 的genrule
外观。
要回答您的第二个问题:您可以使用cflags
添加定义:
<some-module> {
[...]
cflags: ["-DTARGET_CONFIG"],
}
推荐阅读
- copy - 复制 N 次 Sling 资源
- javascript - 如何在 rxjs 和 axios 中永久重复订阅
- android - 在 ConstraintLayout 中移位的链式视图
- c - 如何抑制“警告:从不同大小的整数转换为指针”?
- python - Pyautogui 使用 size() 获取两个整数
- node.js - Node JS 和 Express 混合处理
- django - OperationalError:子选择返回 2 列 - 在 Django QuerySet 中预期为 1
- c - 传递参数从整数生成指针,没有强制转换/预期的“双 *”,但参数的类型为“int”
- javascript - Javascript从属性值匹配的对象数组中返回数组
- powershell - 如何跟踪 AD 用户上次访问/映射共享文件夹的日期和时间