我正在尝试构建一个使用多个平台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不喜欢它。
那么,我该如何最好地解决这个问题呢?
两种解决方案
hdrs = ["application.h"]
添加到base_mac
,或者cc_library
创建另一个hdrs = ["application.h"]
,取决于来自base
和base_mac
的那个,并从hdrs
和base
中删除base_mac