与 BUILD 文件所在的文件夹相比,我的 .h 文件位于不同的文件夹中。我正在为每个模块制作 BUILD 文件,以便该模块可以在不同的项目中重用。如何将不同模块中存在的 .h 文件链接到需要它的模块?
我尝试使用导出文件,但没有成功。我想要一种使路径相对的方法,因为它是一个 git 存储库。
cc_library
似乎就是您正在寻找的。
例如,如果我有一棵树:
.
├── MODULE.bazel
├── WORKSPACE
├── app1
│ ├── BUILD
│ └── app1.c
├── app2
│ ├── BUILD
│ └── app2.c
└── interface
├── BUILD
└── my.h
interface/BUILD
文件可能如下所示:
cc_library(
name = "interface",
hdrs = ["my.h"],
includes = ["."],
visibility = ["//visibility:public"],
)
includes
会将定义的搜索路径添加到消费者编译器(预处理器)调用中。如果您希望包含 .
,请像本示例中那样添加 my.h
,如果省略,则需要将其称为 interface/my.h
。并确保 visibility
允许您的消费者依赖此库。
然后,在任一应用程序
BUILD
文件中,您可以简单地依赖您的(仅标头)库:
cc_binary(
name = "app1",
srcs = ["app1.c"],
deps = ["//interface"],
)