gpt4 book ai didi

c++ - 如何解决 bazel "undeclared inclusion(s)"错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:38 25 4
gpt4 key购买 nike

我是 bazel 的新手,我无法用它构建我的 C++ 包

ERROR: /path/to/package/BUILD:linenumber:1 undeclared inclusion(s) in rule '//path/to/package:name': this rule is missing dependency declarations for the following files included by 'path/to/package/source_file.cpp'

...后跟不同目录中的头文件列表。这些文件不是正在构建的包的一部分,而是从其他地方引入的。

我的问题是如何将声明正确添加到 BUILD 文件中以解决错误?

根据在线 Bazel 文档 here我应该将每个 header 添加到 srcs 列表中。 (需要明确的是,这些是我正在构建的库在内部使用的 header ,不是公共(public)接口(interface)的一部分,因此它们不属于 >hdrs。)但如果我尝试这样做,

  srcs = [ ..., "path/to/dependent/headers/header.h",]

我收到一条错误消息

ERROR: ... crosses boundary of subpackage ... (perhaps you meant to put the colon here: ...?)

因为带有 header 的目录不是 Bazel 包。

如果我按照错误消息的建议尝试将最后的/更改为冒号,

  srcs = [ ..., "path/to/dependent/headers:header.h",]

然后

ERROR: ... target names may not contain ':'.

Bazel C++ 教程 here ,在“Additonal Include Paths”部分说外部包含目录应该通过copts声明:

cc_library(
name = "some_lib",
srcs = ["some_lib.cc"],
hdrs = ["some_lib.h"],
copts = ["-Ithird_party/some_lib"],
)

但是添加 -I 标记并 git 摆脱了“未声明的包含”错误!

$ bazel version
Build label: 0.4.3
Build target: bazel-out/local-fastbuild/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Thu Dec 22 12:31:25 2016 (1482409885)
Build timestamp: 1482409885
Build timestamp as int: 1482409885

最佳答案

我遇到了类似的问题“undeclared inclusion(s) in rule”,我通过删除“/root/.cache/bazel/”中的 bazel 缓存文件解决了这个问题。

关于c++ - 如何解决 bazel "undeclared inclusion(s)"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43921911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com