处理多个平台的实现

问题描述 投票:1回答:1

我正在尝试构建一个使用多个平台API的跨平台库。我现在正在做macOS,因为我需要使用objective-c,所以我遇到了问题。

我有这个:

cc_library(
    name = "base",
    hdrs = ["application.h"],
    deps = [":base_mac"],
    visibility = ["//visibility:public"],
)

objc_library(
    name = "base_mac",
    srcs = ["application_mac.mm"],
)

在其他包中,我依赖于base

问题是application_mac.mm包含application.h并实现它但它不编译,因为base_mac规则不依赖于base规则而且不能使用它的标题。它也无法添加此依赖项,因为我们有一个依赖循环,而bazel不喜欢它。

那么,我该如何最好地解决这个问题呢?

objective-c macos cross-platform bazel
1个回答
1
投票

两种解决方案

  • 或者将hdrs = ["application.h"]添加到base_mac,或者
  • cc_library创建另一个hdrs = ["application.h"],取决于来自basebase_mac的那个,并从hdrsbase中删除base_mac
© www.soinside.com 2019 - 2024. All rights reserved.