Bazel rules_foreign_cc-在构建时使用从源代码构建的cmake二进制文件

Bazel rules_foreign_cc-在构建时使用从源代码构建的cmake二进制文件,bazel,Bazel,我正在尝试运行一个Bazel构建,它使用rules_foreign_cc的cmake_external规则。我的理解是,通过将适当的参数传递给rules_foreign_cc_dependencies(…)workspace函数,我可以指示构建使用预构建版本的cmake,而不是使用本地安装在构建服务器上的cmake 我尝试过以下方法,但没有效果: rules_foreign_cc_dependencies( ["//:built_cmake_toolchain"], False,

我正在尝试运行一个Bazel构建,它使用rules_foreign_cc的cmake_external规则。我的理解是,通过将适当的参数传递给rules_foreign_cc_dependencies(…)workspace函数,我可以指示构建使用预构建版本的cmake,而不是使用本地安装在构建服务器上的cmake

我尝试过以下方法,但没有效果:

rules_foreign_cc_dependencies(
    ["//:built_cmake_toolchain"],
    False,
)
其中,
builded\u cmake\u工具链
定义如下:

toolchain(
    name = "built_cmake_toolchain",
    exec_compatible_with = [
        "@bazel_tools//platforms:osx",
        "@bazel_tools//platforms:x86_64",
    ],
    toolchain = "@rules_foreign_cc//tools/build_defs/native_tools:built_cmake",
    toolchain_type = "@rules_foreign_cc//tools/build_defs:cmake_toolchain",
)
,但在构建过程中,我遇到了一个“找不到与@rules\u foreign\u cc//tools/build\u defs:cmake\u toolchain类型匹配的工具链”错误

有人知道在使用rules\u foreign\u cc的external\u cmake规则时如何使用非本地安装的cmake版本吗


谢谢

您可能还需要ninja工具或用于Linux平台的工具。我很幸运地使用了这个配置:

工作区

rules_foreign_cc_dependencies(
    native_tools_toolchains = [
        ":built_cmake_toolchain_linux",
        ":built_cmake_toolchain_osx",
        ":built_ninja_toolchain_linux",
        ":built_ninja_toolchain_osx",
    ],
    register_default_tools = False,
)

构建


toolchain(
    name = "built_cmake_toolchain_linux",
    exec_compatible_with = [
        "@bazel_tools//platforms:linux",
        "@bazel_tools//platforms:x86_64",
    ],
    toolchain = "@rules_foreign_cc//tools/build_defs/native_tools:built_cmake",
    toolchain_type = "@rules_foreign_cc//tools/build_defs:cmake_toolchain",
)

toolchain(
    name = "built_cmake_toolchain_osx",
    exec_compatible_with = [
        "@bazel_tools//platforms:osx",
        "@bazel_tools//platforms:x86_64",
    ],
    toolchain = "@rules_foreign_cc//tools/build_defs/native_tools:built_cmake",
    toolchain_type = "@rules_foreign_cc//tools/build_defs:cmake_toolchain",
)

toolchain(
    name = "built_ninja_toolchain_linux",
    exec_compatible_with = [
        "@bazel_tools//platforms:linux",
        "@bazel_tools//platforms:x86_64",
    ],
    toolchain = "@rules_foreign_cc//tools/build_defs/native_tools:built_ninja",
    toolchain_type = "@rules_foreign_cc//tools/build_defs:ninja_toolchain",
)

toolchain(
    name = "built_ninja_toolchain_osx",
    exec_compatible_with = [
        "@bazel_tools//platforms:osx",
        "@bazel_tools//platforms:x86_64",
    ],
    toolchain = "@rules_foreign_cc//tools/build_defs/native_tools:built_ninja",
    toolchain_type = "@rules_foreign_cc//tools/build_defs:ninja_toolchain",
)