Bazel rules_foreign_cc-在构建时使用从源代码构建的cmake二进制文件
我正在尝试运行一个Bazel构建,它使用rules_foreign_cc的cmake_external规则。我的理解是,通过将适当的参数传递给rules_foreign_cc_dependencies(…)workspace函数,我可以指示构建使用预构建版本的cmake,而不是使用本地安装在构建服务器上的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,
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",
)