4 ms·
Looks like it's a declarative CMake so you don't have to interact with the CMake DSL yourself. Which is nice, but I've rarely had a non-sample/toy CMake project
by ComputerGuru 2y ago
Looks like it's a declarative CMake so you don't have to interact with the CMake DSL yourself. Which is nice, but I've rarely had a non-sample/toy CMake project where I didn't have to hack something outside of the straightforward steps the docs make it look like you need to do, so my number concern with this is that it's going to end up being a (very) leaky abstraction. How much will cmkr get in the way and make it harder than if you had written out the CMake yourself to begin with? How much of the time will it "just work" vs end up being of little use?
It's great that it's self-bootstrapping, though. I thought they would have you install both this tool and CMake in order to build the project on end-user's machines.
- tempodox 2y agoI 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.