如何解决Bazel如何在依赖项中添加前缀?
我有两个库libA和libB。
都有自己的BUILD文件。
libA.BUILD看起来像这样:
#libA.BUILD file
cc_library(
name "libA_foo",srcs = ["foo.cc"],hdrs = ["foo.h"],)
cc_library(
name "libA_bar",srcs = ["bar.cc"],hdrs = ["bar.h"],deps = [":libA_foo"],)
现在我想在libB的cc_library中包括一些libA标头
我可以那样做
#libB.BUILD file
cc_library(
name "libB_qux",srcs = ["qux.cc"],hdrs = ["qux.h"],deps = ["@libA//:libA_foo"]
)
在qux.cc中,我想将libA_foo的标头包括为#include "libA/foo.h"
而不是#include "foo.h"
我知道我可以在include_prefix = "libA"
上添加一个libA_foo
,但是这样会弄乱libA中其他库的包含内容,并且我不想对libA进行更改。
我可以在列出依赖项时以某种方式声明前缀吗?
解决方法
尝试一下:
- 使用
include_prefix
将前缀添加到//libA:libA_foo
的已导出标头中。 - 在
foo.h
的{{1}}中添加srcs
,以便不带前缀就可以使用它们。 - 还要在
//libA:libA_foo
的{{1}}中添加foo.h
。
示例:
srcs
摘自//libA:libA_bar
文档:
cc_library( name "libA_foo",srcs = ["foo.cc","foo.h"],hdrs = ["foo.h"],include_prefix = "libA",) cc_library( name "libA_bar",srcs = ["bar.cc",hdrs = ["bar.h"],deps = [":libA_foo"],)
文件不会被编译,但是可以被该规则中的源包含。cc_library
和.h
文件都可以直接包含这些.cc
或.h
参数中列出的任何规则的srcs
中列出的标头。
意思是,hdrs
可以访问deps
中的foo.h
,而其他srcs
中的libA_foo
可以使用包括前缀。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。