【问题标题】:Compiler options in Andriod.bp filesAndroid.bp 文件中的编译器选项
【发布时间】:2019-11-18 13:53:16
【问题描述】:

每个人。 我正在尝试将 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 中的 cppflag 与 DSW_VERSION 一起使用,但我发现无法像在 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 是一个用所有需要的标志定义的变量,它不起作用

谁能帮我解决这些问题?

【问题讨论】:

    标签: android android-soong


    【解决方案1】:

    您可以使用genrule 在构建时生成代码(例如,包含存储库版本的头文件)。查看Wayland Android.bp 作为示例,了解genrule 的外观。

    回答您的第二个问题:您可以使用cflags 添加定义:

    <some-module> {
        [...]
        cflags: ["-DTARGET_CONFIG"],
    }
    

    【讨论】:

      猜你喜欢
      • 2012-08-20
      • 2019-03-02
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多