首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bazel cc_library依赖于其他cc_library时,每次编译时使用不同的交叉凳子

Bazel cc_library依赖于其他cc_library时,每次编译时使用不同的交叉凳子
EN

Stack Overflow用户
提问于 2017-07-06 07:25:56
回答 1查看 255关注 0票数 2

我有一个代码生成器工具,可以生成C/C++代码。此代码生成器工具是用crosstool1编译的。生成的C/C++代码需要用crosstool2编译。

因此,行动是:

  • 使用Crosstool1编译代码_生成器。
  • 执行“code_generator”并生成“generated_code.cpp”
  • 使用Crosstool2编译“generated_code.cpp”

是否可以让cc_library()确定要使用的交叉台呢?我看到Skylark规则现在允许一个“工具链”参数,我不确定它是如何使用的,我也不想做C/C++用Skylark编译裸骨的繁重工作。

除了Tenserflow示例之外,是否有使用适当的主机库和目标库的示例?每当我读到它,我都会头痛。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-06 07:56:13

假设//crosstool1:toolchain是描述第一个交叉台的cc_toolchain_suite规则的标签,//crosstool2:toolchain是第二个交叉台的cc_toolchain_suite标签,该项目的构建文件是:

代码语言:javascript
复制
cc_binary(
    name = "generator",
    srcs = [ "main.cc" ],
)

genrule(
    name = "generate",
    outs = ["generated.cc"],
    cmd = "$(location :generator) > $@",
    tools = [":generator"],
)

cc_binary(
    name = "generated",
    srcs = [ "generated.cc" ],
)

然后跑:

代码语言:javascript
复制
bazel build --host_crosstool_top=//crosstool1:toolchain --crosstool_top=//crosstool2:toolchain :generated

将按照您所描述的那样做,它将使用crosstool1构建:生成器,使用crosstool2生成生成。默认情况下,Genrules使用主机配置,所以所有这些都应该正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44942317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档