如何将相对路径扩展到 bazel 中 cc_common.create_cc_toolchain_config_info 中 cxx_builtin_include_directories 的完整路径?

问题描述

在声明 cc_common.create_cc_toolchain_config_info 并提供 cxx_builtin_include_directories 时,我发现需要完全指定包含路径。我只知道 def _impl(ctx) 中 crosstool.bzl 文件中目录的相对路径,我如何才能完全展开? 例如

def _impl(ctx):
    cxx_builtin_include_directories = ["relative/clang/include"]
    return cc_common.create_cc_toolchain_config_info(
        ctx = ctx,features = features,tool_paths = tool_paths,cxx_builtin_include_directories = cxx_builtin_include_directories,# ...
    )

cc_toolchain_config = rule(
    implementation = _impl,attrs = {},provides = [CcToolchainConfigInfo],)

如何将“relative/clang/include”扩展为真实路径?

解决方法

有一种特殊的语法可以做到这一点。它看起来像 "%package(@your_toolchain//relative/clang/include)%",其中 @your_toolchain 替换为您的存储库名称

这些指令在生成编译器命令行时会被扩展。我不知道除了 the source 之外的任何文件。