bazel 重新编译 protobuf 超过必要的程度

bil*_*ill 5 protocol-buffers protobuf-c bazel

我按照这个例子做了,效果很好。

但有时(并非总是)当我更改一些与 protobuf 和重建完全无关的应用程序级代码时,bazel 会花费所有时间重新编译 protobuf。

有什么建议我可以尝试调试这个吗?

yna*_*ame 0

我遇到了同样的问题:protobuf C++ 似乎重新编译每个版本。构建项目的时间从大约 3 秒缩短到 30 秒。

我使用以下命令启动构建:

bazel build -c dbg --config=asan <target>
bazel run -c dbg --config=asan <target>
Run Code Online (Sandbox Code Playgroud)

一旦我删除了,问题实际上就消失了--config=asan

作为参考,这里是 asan 的配置方式(行位于文件.bazelrc旁边WORKSPACE

# Address sanitizer
build:asan --strip=never
build:asan --copt -fsanitize=address
build:asan --copt -DADDRESS_SANITIZER
build:asan --copt -DDYNAMIC_ANNOTATIONS_ENABLED=1
build:asan --copt -g
build:asan --copt -fno-omit-frame-pointer
build:asan --copt -fsanitize-address-use-after-scope
build:asan --linkopt -fsanitize=address
build:asan --dynamic_mode=off
Run Code Online (Sandbox Code Playgroud)