“与Bazel交叉编译时,系统标题缺少相关性声明

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

我正在尝试使用Bazel与交叉编译工具链交叉编译项目(TensorFlow C库)。经过无奈的沉思(但这是另一回事),我终于设法获得了外部依赖关系的实际编译(例如zlib或protobuf),以与我的工具链一起使用,但是,我现在对所有系统都获得了[[missingdependency Declarations]]生成此错误的已编译规则所包含的标头(由交叉编译工具链提供)。此确切的错误在Bazel's own tutorial for configuring C++ toolchains中进行了描述(在步骤10的最底部)。他们还提出了一种解决方案,包括向feature添加feature,该CcToolchainConfigInfo通过-isystem标志添加系统头目录。]

我通过该修复程序遇到的问题是,我无法按所述添加这些目录的绝对路径,因为这会触发此错误:

包含路径...引用执行根外部的路径。

] >[而不是使用绝对路径,我还尝试在new local repositories中用WORKSPACEfilegroups声明filegroups,并在它们的cc_libraries /cc_libraries/ srcs中列出路径,并引用这些路径改为使用hdrs标志中的includes / filegroups,但我的尝试均无效。也许我做的不对,但是我尝试了很多变化。

如果我无法添加绝对路径或无法使其使用本地存储库,那么正确的方法是什么?

我正在尝试使用Bazel与交叉编译工具链交叉编译项目(TensorFlow C库)。在无奈之下(但这是另一个故事),我终于设法得到了实际的...

为了使检查知道从主机使用的标题,即使没有显式声明为依赖项,也应将其视为系统标题,可以将包含此类标题的目录列表提供给cc_libraries-isystem属性在定义cxx_builtin_include_directories时。例如,从主机为我的系统编译器和系统库编写一个,我可以说:

create_cc_toolchain_config_info()

对于不位于bazel自己的树中的宿主工具,我目前不知道另一种方法。至少从3.1.0版本开始,它可以工作并有文档记录。

注意:这将配置依赖项检查,而不是像这样搜索工具的路径,这是您提到的适当的create_cc_toolchain_config_info()发挥作用的地方。

c++ tensorflow cross-compiling bazel toolchain
1个回答
1
投票
为了使检查知道从主机使用的标题,即使没有显式声明为依赖项,也应将其视为系统标题,可以将包含此类标题的目录列表提供给cc_libraries-isystem属性在定义cxx_builtin_include_directories时。例如,从主机为我的系统编译器和系统库编写一个,我可以说:
© www.soinside.com 2019 - 2024. All rights reserved.