I am an architect for a old, mono repo code base consisting of Java, C++ and Python. We are looking for a new build system to replace our own homegrown Make/Ant system. For me Bazel is obvious, but the rest of the team knows CMake very well. I am also starting to convince at least one of my coworkers, that it is a fundamentally good build system with easy syntax, can build both Java and C++, and he also found now, being experimenting, that it is really nice with a build cache.
But he still have some show-stoppers:
1) Lack of IDE integration. CMake and Gradle have a highlevel support in most IDEs. We are especially looking VsCode, which we have changed to recently as our standeard IDE.
I found
bazel - C++ commands database which seems to be a doable way to get a somewhat acceptable support in VsCode, but nothing for import Java classpath.
The best would of course be a plugin in VsCode just handling it...
2) Long startup times. Even though we have only tried to port a small part of our codebase to Bazel, it takes in the order of 1-2 minutes to start the Bazel server. We have 15000 rules already - but mainly by building Boost in a genrule() generating a lot of .hpp files. I also tried the make_foreign_cc package, still it takes a lot of time scanning all those, now foreign, .hpp files from Boost.
But it doesn't sound promissing, that it doesn't scale that well already from the beginning. Are we supposed to make more WORKSPACE files to make it scale or can Bazel scale a lot of code within one big WORKSPACE file?
3) Nobody knows Bazel. Everyone in Java world knows Gradle, everybody in C++ world knows CMake. So there re nobody to ask :-( (and is why, there is so little 3rd party integration).
Do anyone have any comments on these findings?
/Esben