I was thinking about this because Visual Studio supports this natively. It's a really hard problem for the reference implementation because of it's implementation details, but I think we could actually solve it fairly easily:
hold off on lowering away buildtype, b_vscrt, b_debug, b_optimisation (and possibly a few others) as long as possible
clone the IR into 4 separate IRs, one for each buildtype
rename all of the targets into foo_{buildtype}
set the default all in ninja to be all_{buildtype}, but the user can run ninja -C builddir all_{different_build_type} to get that instead
I was thinking about this because Visual Studio supports this natively. It's a really hard problem for the reference implementation because of it's implementation details, but I think we could actually solve it fairly easily:
buildtype
,b_vscrt
,b_debug
,b_optimisation
(and possibly a few others) as long as possiblefoo_{buildtype}
all_{buildtype}
, but the user can runninja -C builddir all_{different_build_type}
to get that insteadprofit?