如何使用select()指定较低级别库依赖项的src配置

时间:2019-07-12 22:14:12

标签: bazel

我有一个 public class Reminder { [PrimaryKey][AutoIncrement] public int ReminderId { get; set; } public bool Status { get; set; } public string ReminderLocation { get; set; } //in terms of days public DateTime ReminderCreationDate { get; set; } public List<string> Tasks { get; set; } } top_level_library构建,它具有一系列依赖关系,并且在其下三层具有一个依赖关系bazel build,其中有library_a个选项bazel抱怨说,我似乎要针对哪个CPU体系结构(arm64-v8a,armeabi-v7a等)进行构建。我似乎无法一直将顶级选项一直传递到srcs以指定源可配置属性与传入的配置不匹配

我尝试将配置值命名为library_a,我知道我可以在fat_apk_cpu之后用该标志为正确的cpu架构构建bazel,并且直到一切正常为止我到了bazel build //:top_level_library --fat_apk_cpu=x86,在这里我不使用bazel来构建它,只是从正确的地方获取资源。

这是我的library_a

top_level_library

为简单起见,我将依赖性降低了一层,但实际上降低了三层

cc_library(
    name = "top_level",
    srcs = glob([
        ...,
    ]),
    deps = [
        ":library_a"
    ],
)

还有3个配置设置,每个选项一个:

cc_library(
  name = "library_a",
  srcs = select({
    ":armeabi_v7a" : 
        ["lib/armeabi-v7a/lib.so"],
    ":x86" : 
        ["lib/x86/lib.so"],
    ":arm64_v8a" : 
        ["lib/arm64-v8a/lib.so"],
  })
)

错误消息如下:

config_setting(
    name = "x86",
    values = {"cpu": "x86"},
)

config_setting(
    name = "armeabi_v7a",
    values = {"cpu": "armeabi_v7a"},
)

config_setting(
    name = "arm64_v8a",
    values = {"cpu": "arm64_v8a"},
) 

任何解决此问题的技巧将不胜感激!

1 个答案:

答案 0 :(得分:1)

请注意,<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.6/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.6/umd/react-dom.production.min.js"></script>仅在建立--fat_apk_cpu目标时有效。在构建其他任何内容时,仅android_binary的值很重要(包括自行构建--cpu的目标,这些目标也可能位于cc_library的部门中)。 armeabi_v7a,arm64_v8a和x86并非android_binary的任何默认值,因此在构建此目标时必须在命令行上进行设置,或为--cpu提供默认值。 / p>