我定义了一个新的锈蚀工具链如下(从生锈分叉):
toolchain(
name = "toolchain_for_armv7-linux-androideabi",
exec_compatible_with = ["@platforms//cpu:x86_64", "@platforms//os:windows"],
target_compatible_with = ["@platforms//cpu:armv7", "@platforms//os:android"],
toolchain = "@rust_windows_x86_64//:toolchain_for_armv7-linux-androideabi_impl",
toolchain_type = "@rules_rust//rust:toolchain",
)还有一个现有的工具链,定义如下:
toolchain(
name = "toolchain_for_x86_64-apple-darwin",
exec_compatible_with = ["@platforms//cpu:x86_64", "@platforms//os:osx"],
target_compatible_with = ["@platforms//cpu:x86_64", "@platforms//os:osx"],
toolchain = "@rust_darwin_x86_64//:toolchain_for_x86_64-apple-darwin_impl",
toolchain_type = "@rules_rust//rust:toolchain",
)并为该平台建立一个目标:
bazel build --toolchain_resolution_debug=@rules_rust//rust:toolchain --experimental_platforms_api vrst-test/android --platforms=//platforms:android_armv7
下面是ToolchainResolution调试信息的片段:
INFO: ToolchainResolution: Type @rules_rust//rust:toolchain: target platform @local_config_platform//:host: execution @local_config_platform//:host: Selected toolchain @rust_darwin_x86_64//:toolchain_for_x86_64-apple-darwin_impl
INFO: ToolchainResolution: Type @rules_rust//rust:toolchain: target platform @local_config_platform//:host: Rejected toolchain @rust_darwin_x86_64//:toolchain_for_armv7-linux-androideabi_impl; mismatching values: armv7, android由于某些原因,目标平台是@local_config_platform//:host,尽管我将该平台显式地指定为android_armv7,定义如下:
platform(
name = "android_armv7",
constraint_values = [
"@platforms//cpu:armv7",
"@platforms//os:android",
],
)```发布于 2022-03-09 06:51:23
Bazel解析--platforms指定的目标平台和--host_platform指定的主机平台的工具链。如果您实际上希望为toolchain_for_armv7-linux-androideabi构建主机工具,则需要设置--host_platform。
https://stackoverflow.com/questions/71403753
复制相似问题