【发布时间】:2018-07-19 16:00:55
【问题描述】:
问题:我正在努力构建包含在尖括号中的外部依赖项。
背景:我有一个包含 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' 文件未找到等等等等
(当我的头文件包含在其他地方时会发生这种情况。)
有趣的是,它确实以某种方式找到了 Eigen/Dense,因为它(正确地)抱怨它找不到包含的另一个文件。不确定是否
那么:正确的方法是什么?我读过其他类似的问题,但还没有完全掌握如何封装这些外部依赖项。
【问题讨论】: