While I would not use Spack (or any package manager) to drive the usual hack-build-test development loop, Spack does provide at least two mechanisms to support that kind of general-purpose development activity: "environments" and "views".
Given the list of build systems includes SCons, I'd expect to see waf (waf.io) here.
Downloading the dev version of libraries is ancient history.
Also if you use it, make sure not to rely on Conan center. Their outages can ruin your week.
https://github.com/franko/lhelper
It is currently used by nobody except me but it serves me well.
Its strong points are:
- it works on macOS, Linux and Windows - it is possible to choose the options you want to enable for each package - compiles packages using your own compiler toolchain - create static libraries by default but you can choose a shared library.
I personally have a system based on Guix, which is like Nix.
One important note is that doing LTO with such a setup is tricky (and I haven’t attempted it yet).
It is possible to transform existing packages to use your preferred C++ toolchain using —-with-c-toolchain, which avoids the ABI incompatibility trap, but I haven’t figured out how to create LTO-enabled static libs from system packages yet.
But FetchContent / ExternalProject in CMake is super convenient and works really well if you just have a couple simple dependencies.
We migrated netpanzer from Scons to Meson - that was a lot of work (which I didn't do), but it actually integrates with CLion now, builds on win/Linux easily, and builds fast with Ninja.
Scons wasn't that bad, though, I just feel like the build script being turing complete was a pain.
Also Meson doesn't want to just output a binary in your source root. It insists to put it in a build dir, unlike scons.
Regarding vcpkg, this hasn't been true for a while.