问题:我正在努力针对尖括号中包含的外部依赖项进行构建。
背景:我有一个包含Eigen库的头文件:
#include <Eigen/Dense>
此文件作为外部依赖项安装在系统本地。由于各种原因,修改依赖关系的安装方式目前不是现实的选择。
所以我需要一致的封装外部依赖项作为Bazel目标。目前,我正在研究仅标头的目标,如下所示:
cc_library(
name = "my_library",
hdrs = [ "some/local/header.h"],
textual_hdrs = ["@system_deps//:eigen3"],
deps = ["@system_deps//:eigen3"],
)
这是基于我的理解,(1)非.h文件需要位于textual_hdrs中,(2)当它不是deps的一部分时肯定看不到它。但是我承认我在黑暗中抓紧了。
这当然指向我的工作空间:
new_local_repository(
name = "system_deps".
path = "/usr/include/eigen3",
build_file_content = """
cc_library(
name="eigen3",
textual_hrds = glob["Eigen/*"]),
visibility = ["//visibility:public"],
)
""",
)
结果:错误:找不到“本征/密集”文件
(当我的头文件包含在其他位置时,会发生这种情况。)
有趣的是,它确实找到了Eigen / Dense,因为它抱怨(正确)找不到包含的另一个文件。不确定
所以:正确的方法是什么?我读过其他类似的问题,但还没有完全掌握如何封装这些外部依赖项。