4 ms·
I would love for this to be true, but I'm afraid I don't have any evidence that it is. What are the better options you'd recommend? More specifically, Google's
by benesch 9y ago
I would love for this to be true, but I'm afraid I don't have any evidence that it is. What are the better options you'd recommend?
More specifically, Google's Bazel [0] is the most serious attempt I know of to replace CMake/autotools, but it only just began to support Windows [1] and requires the JDK. Say what you will about CMake, but it's a quick-and-easy MSI to install on Windows and has supported Windows for probably longer than I've been alive. Google's other open source build system, GYP [1a], supports Windows because it builds Chromium, but GYP might as well be undocumented. Unless you like spelunking into the Chromium source, GYP is a non-starter. (Props to the Node folks for actually doing this for Node and Node extensions.)
I haven't used Gradle [2], but I've heard more than a few times it's slow (warning: might be FUD)... and it also requires a JRE.
Ninja [3] is blazing fast, but it's specifically designed not to be used directly, but rather through a build system generator like CMake.
I'll be the first person to ditch CMake if a feasible alternative presents itself, but if you want to build a cross-platform, moderately-complicated C++ project today, especially one with dependencies on other libraries that use arbitrary build systems, I don't know of any such alternative.
[0]: https://bazel.build https://bazel.build
[0a]: https://gyp.gsrc.io https://gyp.gsrc.io
[1]: https://docs.bazel.build/versions/master/windows.html https://docs.bazel.build/versions/master/windows.html
[2]: https://gradle.org https://gradle.org
[3]: https://ninja-build.org https://ninja-build.org
- bonzini 9y agoMeson (https://www.mesonbuild.com/ https://www.mesonbuild.com/) seems to have a lot of momentum; GNOME has just adopted it. It is designed around a non-Turing complete, object-oriented DSL, plus extension modules written in Python.
- int_19h 9y agoBoost.Build and QMake are two relatively popular choices that are mature and stable. I have particularly noticed the uptick in QMake usage in OSS projects lately, probably because it is so straightforward to use for the most common cases. I think it's not more popular than it is only because it's associated with Qt, and many people (wrongly) assume that it can only be used for Qt apps, or that it depends on Qt.