我正在为二分搜索算法编写一个仅包含标头的库,并使用 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
对非系统标头使用带引号的包含 (#include "lib/binary_search.h"),而不是尖括号 (#include
还要从
copts
中删除 cc_binary
属性,因为无论如何你都在使用相对包含。