Bazel 构建包括标头失败

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

我正在为二分搜索算法编写一个仅包含标头的库,并使用 Bazel 构建它。我的目录结构如下:

my_project/
├── WORKSPACE
├── lib/
│   ├── BUILD
│   └── binary_search.h
└── app/
    ├── BUILD
    └── main.cc

lib/BUILD 包含以下代码:

# In lib/BUILD
cc_library(
    name = "binary_search",
    hdrs = ["binary_search.h"],
    includes = ["."],
    visibility = ["//visibility:public"],
)

应用程序/构建包含以下代码:

cc_binary(
    name = "app",
    srcs = ["main.cc"],
    deps = ["//lib:binary_search"],
    copts = ["-Ilib/"],
)

main.cc 包含带有尖括号的标头:

#include <lib/binary_search.h>

我收到以下错误:

app/main.cc:1:10: fatal error: lib/binary_search.h: No such file or directory
    1 | #include <lib/binary_search.h>

问题的根源是什么?如何在保留尖括号的同时解决该问题?这是项目github:https://github.com/proywm/testProject/tree/main

build bazel
1个回答
0
投票

对非系统标头使用带引号的包含 (#include "lib/binary_search.h"),而不是尖括号 (#include )。

还要从

copts
中删除
cc_binary
属性,因为无论如何你都在使用相对包含。

© www.soinside.com 2019 - 2024. All rights reserved.