4 ms·
I share your concerns. I mean, I could use a build system that is as powerful and versatile as CMake, but much more declarative and not a horrible inscrutable
by tempodox 2y ago
I share your concerns. I mean, I could use a build system that is as powerful and versatile as CMake, but much more declarative and not a horrible inscrutable mess of procedural manipulation of mutable state like CMake is. But that would probably mean replicating, in some way, all the years of work that went into CMake proper and its 3rd-party extensions. Not an easy task.
I want something that is declarative and extensible at its core, and not an after-the-fact bandaid that tries to fix what's broken beyond repair.
- celdon25 2y agoBazel?
- jcranmer 2y agoSo far, the closest buildsystem I've seen to that model is Mozilla's build system (https://firefox-source-docs.mozilla.org/build/buildsystem/build-overview.html https://firefox-source-docs.mozilla.org/build/buildsystem/bu...), the core of which is a set of python files that basically describe the build graph given the feature context. A simple file might be: SOURCES += ['a.cpp', 'b.cpp'] if CONFIG['OS'] == 'WINNT': SOURCES += ['win.cpp'] elif CONFIG['OS'] == 'OSX': SOURCES += ['osx.cpp'] else: SOURCES += ['unix.cpp'] I like that it uses the Python language rather than coming up with its own DSL for handling conditionality or things where you need to do loops, and by splitting up the steps in the way that it does, it keeps the build system fairly declarative. But don't look under the hood, because the things under the hood are fiendishly complex and it's way too complicated to be usable for a simple project.
- jamesfinlayson 2y agoInteresting - a current (or maybe former) Firefox dev does Half-Life 2 plugin stuff in his spare time and created something similar called ambuild which his projects use.