Bazel:不同构建选项的单独输出目录

Bazel:不同构建选项的单独输出目录,bazel,Bazel,Bazel为不同的编译模式(fastbuild、opt、dbg)提供了不同的输出目录,这允许它在您以调试模式编译应用程序后保持发布版本缓存的完整性。这很好 是否可以对不同的编译选项执行相同的操作

Bazel为不同的编译模式(fastbuild、opt、dbg)提供了不同的输出目录,这允许它在您以调试模式编译应用程序后保持发布版本缓存的完整性。这很好

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

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


因此,a将它们放在一个定义下,我可以通过
--cxopt=-DUNROLL\u ALL\u THE \u THINGS
进行切换。但每当我从展开的版本切换到简单的版本时,Bazel就会删除编译缓存。本质上,我已经将“opt”模式分为两种(“opt”和“super opt”),但我不能让Bazel这么看。

可以使用该选项手动为输出目录名添加后缀。因此,每当您使用
--cxopt=-DUNROLL\u所有东西时,您都可以传递
--platform\u suffix=super
,我建议将
--platform\u suffix
--cxopt
都放在a中,以便您可以使用
--config
来切换它们。更难忘记,更容易以后添加更多。