处理多个平台的实现

时间:2017-12-29 13:23:03

标签: objective-c macos cross-platform bazel

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

我有这个:

jest

在其他套餐中,我依赖于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规则而且无法编译,因此无法编译使用它的标题。它也不能添加这种依赖,因为我们有一个依赖循环,而bazel不喜欢它。

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

1 个答案:

答案 0 :(得分:1)

两种解决方案:

  • 也可以将hdrs = ["application.h"]添加到base_mac,或
  • 仅使用cc_library创建另一个hdrs = ["application.h"],取决于basebase_mac中的hdrs,并从base中删除base_mac ()