【问题标题】:Bazel: Separate output directories for different build optionsBazel:不同构建选项的单独输出目录
【发布时间】:2021-07-29 19:25:02
【问题描述】:

Bazel 为不同的编译模式(fastbuild、opt、dbg)提供不同的输出目录,这允许它在您以调试模式编译应用程序后保持发布构建缓存不变。太棒了。

是否可以对不同的编译选项执行相同的操作?

我的用例:我有一个定制的 C++ 符号计算系统。程序的每次运行都是一次计算。大多数计算需要几秒钟。但有些需要几分钟。为了加快后者的速度,我展开了几个低级函数,现在数千行代码被复制到每个编译单元(因为函数是模板化的)。这对计算速度产生了不错的影响,但也显着减慢了编译速度。仅在一小部分运行中使用这些优化才有意义。

因此,将它们置于我可以通过--cxxopt=-DUNROLL_ALL_THE_THINGS 切换的定义之下。但是,每当我从展开版本切换到简单版本并返回时,Bazel 都会删除编译缓存。本质上,我已将“opt”模式分为两种(“opt”和“super-opt”),但我无法让 Bazel 以这种方式看待它。

【问题讨论】:

    标签: bazel


    【解决方案1】:

    可以使用--platform_suffix 选项手动为输出目录名称添加后缀。因此,无论何时使用--cxxopt=-DUNROLL_ALL_THE_THINGS,您都可以传递--platform_suffix=super

    【讨论】:

    • 我建议将--platform_suffix--cxxopt 都放在.bazelrc section 中,这样您就可以使用--config 来切换它们。更难忘记,以后更容易添加。
    猜你喜欢
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2014-02-18
    • 2020-05-29
    • 2015-09-25
    相关资源
    最近更新 更多