bazel - Bazel:不同构建选项的单独输出目录
问题描述
Bazel 对不同的编译模式(fastbuild、opt、dbg)有不同的输出目录,这允许它在你以调试模式编译应用程序后保持发布构建缓存的完整性。这是伟大的。
是否可以对不同的编译选项做同样的事情?
我的用例:我有一个定制的 C++ 符号计算系统。程序的每次运行都是一次计算。大多数计算需要几秒钟。但有些需要几分钟。为了加快后者的速度,我展开了几个低级函数,现在数千行代码被复制到每个编译单元(因为函数是模板化的)。这对计算速度产生了不错的影响,但也显着减慢了编译速度。仅在一小部分运行中使用这些优化才有意义。
因此,将它们置于我可以通过--cxxopt=-DUNROLL_ALL_THE_THINGS
. 但是每当我从展开的版本切换到简单的版本并返回时,Bazel 都会丢弃编译缓存。本质上,我已经将“opt”模式分为两种(“opt”和“super-opt”),但我不能让 Bazel 以这种方式看待它。
解决方案
可以使用该--platform_suffix
选项手动为输出目录名称添加后缀。因此,您可以--platform_suffix=super
在使用时通过--cxxopt=-DUNROLL_ALL_THE_THINGS
.
推荐阅读
- java - Grails 应用程序启动时出错
- javascript - sprites 如何在 three.js 中工作?
- arrays - 如何以稳定的顺序查找数组中最大 n 个元素的索引
- java - Tomcat Apache ServletException 输出编码
- python - 如何在熊猫中将数据对齐到数据框的顶部
- python-2.7 - Python/Flask 部署的战略错误
- python - DRF 更新一行
- asp.net-mvc - ASP .NET MVC 模板中缺少 bower.json 和 .bowerrc
- javascript - 基本的 reactjs,如何获取 REST 数据并渲染它
- php - php 代码覆盖率和 selenium 设置