我正在尝试使用bazel编译一些支离破碎的、与平台相关的C#代码,我在定义平台时遇到了相当多的问题。
我定义了两个平台:
platform (
name = "darwin",
constraint_values = [
"@bazel_tools//platform:osx",
],
)
platform (
name = "windows",
constraint_values = [
"@bazel_tools//platform:windows",
],
)然后在BUILD文件中其他位置的genrule中的select中使用它:
cmd = select ({
":darwin" : "a bash command",
":windows" : "a long and complex windows command because windows is stupid and makes everything much much more complex than it has to be"
})然而,当我尝试构建一些东西时,我得到一个类似于以下内容的错误
no such package '@bazel_tools//platform': BUILD file not found on package path and referenced by //<package>:darwin我认为这意味着@bazel_tools不可用。
documentation声称@bazel_tools是内置的,所以这对我来说相当令人惊讶--对我来说,“内置”的意思是“你不需要做任何事情就可以使用它”。我也找不到任何可以告诉我如何解决这个问题的东西。
发布于 2018-01-26 02:52:11
我相信这个目录就是平台“:
@bazel_tools//platforms:osx"
发布于 2018-11-17 02:49:07
platform规则没有定义您可以在select()中使用的配置设置。您应该使用config_setting
这对我很有效:
config_setting(
name = "darwin",
constraint_values = [
"@bazel_tools//platforms:osx",
"@bazel_tools//platforms:x86_64"
]
)
config_setting(
name = "linux_x86",
constraint_values = [
"@bazel_tools//platforms:linux",
"@bazel_tools//platforms:x86_64"
]
)https://stackoverflow.com/questions/48443533
复制相似问题