关于Bazel配置设置的疑问
我试图理解检测底层平台的关于Bazel配置设置的疑问,bazel,Bazel,我试图理解检测底层平台的config\u设置,对此我有一些疑问。你能帮我澄清一下吗 x64_窗口和x64_窗口(msvc | msys)cpu之间有什么区别?如果我为它们创建配置设置,是否只会触发其中一个?我是否应该忽略x64_窗口 要检测窗口,建议使用什么方法?目前我正在做: config_setting( name = "windows", values = {"crosstool_top": "//crosstools/windows"}, ) config_settin
config\u设置
,对此我有一些疑问。你能帮我澄清一下吗
x64_窗口
和x64_窗口(msvc | msys)
cpu之间有什么区别?如果我为它们创建配置设置,是否只会触发其中一个?我是否应该忽略x64_窗口config_setting(
name = "windows",
values = {"crosstool_top": "//crosstools/windows"},
)
config_setting(
name = "windows_msvc",
values = {
"crosstool_top": "//crosstools/windows",
"cpu": "x64_windows_msvc",
},
)
config_setting(
name = "windows_msys",
values = {
"crosstool_top": "//crosstools/windows",
"cpu": "x64_windows_msys",
},
)
通过使用此选项,我希望使用:windows
匹配所有windows版本,并使用:windows\u msvc
,例如,仅匹配msvc。这是最好的方法吗darwin
和darwin\u x86\u 64
cpu之间有什么区别?我知道它们与macOS相匹配,但在为macOS选择某些内容时,是否需要始终同时指定两者?如果没有,是否有更好的方法只使用一个config\u设置来检测macOS?像在Windows中使用//crosstools
//条件:default
,但最好有一种方法专门检测Linux,而不是将其保留为默认值k8
,piii
等?是否有任何文档描述了所有可能的cpu值及其含义//crosstools
检测每个平台,是否有地方可以查找所有可用的crosstools谢谢 好问题,各位。让我逐一解决这些问题:
代码> CPU= x64×WiDOWSMSMys/CODE >触发依赖于MySy/CygWin的C++工具链。代码>--cpu=x64\u windows\u msvc触发windows本机(msvc)工具链
-cpu=x64_windows
触发默认值,该值仍然是MSYS,但要发送到MSVC
您想支持哪一个取决于您自己,但出于通用性考虑,支持所有这些可能是最安全的(如果一个只是另一个的别名,则不需要非常复杂的逻辑)
一次只能触发一个config\u设置
除非您使用自定义的-crosstool\u top=
标志来指定Windows版本,否则您可能希望在-cpu
上触发,例如:
config_setting(
name = "windows",
values = {"cpu": "x64_windows"}
配置设置(
name=“windows”,
值={“cpu”:“x64_windows”}
现在没有一个很好的方法来定义所有窗口。这是Bazel目前识别平台能力的一个缺陷,像--cpu
和--crosstool_top
这样的设置并不是很好的建模方法。创建一流的平台概念将为您提供最佳的解决方案。但是现在--cpu代码>可能是您的最佳选择
这与Windows基本相同。但据我所知,默认的crosstools只有darwin
,没有darwin\ux86\u64
目前可能最好使用//条件:默认值方法,而不要这样做。一旦有了一流的平台,这将为您提供所需的逼真度
k8
和piii
分别是86个64位和32位CPU的笔名。根据惯例,它们也倾向于与“Linux”关联,尽管这不是保证1-1匹配
没有确定的“所有可能的CPU值”集合。基本上,--cpu
只是一个字符串,它在CROSSTOOL文件中解析为具有与该字符串匹配的标识符的工具链。这允许您为要自己编码的新cpu类型编写新的CROSSTOOL文件。因此,可用cpu的确切集合取决于谁在使用Bazel以及如何设置其工作区
出于与5相同的原因,没有确定的列表。有关默认值的参考,请参阅Bazel的githubtools/
目录
谢谢你的详细解释!我现在更了解该功能的工作原理了。我想我会等到新平台功能发布后再开始考虑构建多平台。谢谢你的问题链接,我在搜索问题列表时没有看到它。这会有很大帮助。