如何在 Bazel 中的不同 BUILD 文件之间共享 .h 文件?

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

与 BUILD 文件所在的文件夹相比,我的 .h 文件位于不同的文件夹中。我正在为每个模块制作 BUILD 文件,以便该模块可以在不同的项目中重用。如何将不同模块中存在的 .h 文件链接到需要它的模块?

我尝试使用导出文件,但没有成功。我想要一种使路径相对的方法,因为它是一个 git 存储库。

bazel bazel-rules bazel-cpp
1个回答
0
投票

A(仅标题)

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"],
)
© www.soinside.com 2019 - 2024. All rights reserved.