Show HN: Catalyst – A Declarative Build System for C/C++
github.comI've been frustrated with CMake/Autotools for years, so I built Catalyst - a declarative build system for C++ that uses YAML profiles instead of imperative scripts.
Key ideas: - Profile composition (debug + release = debug-release) - Per-target isolation with reproducible builds - Built-in dependency management (vcpkg, git, local, system)
This is still early/rough, but it works for me and my projects. Would love feedback and people to check it out.
Why declarative format? Scripting capabilities of CMake are pretty useful to solve hard problems. Without such flexibility one need to use external scripts to do things impossible in declarative form.
I solved this in a method I quite like: profiles and composition. This enables nearly the same flexibility, albeit in a different format, as CMake. We also get to avoid debugging complex CMake scripts. So you can have a debug a debug profile and asan profile and compose them into a "debug + asan" profile.
Catalyst also has hooks, to address the issue you mentioned about needing external scripts.