Beim Thema Buildsystem bin ich immer ziemlich hin und her gerissen. Bei kleinen Projekten verzichte ich meist auf eine Verzeichnisstruktur und verwende kurze Makefiles.
Gute Erfahrung habe ich sonst auch mit dem Buildsystem "BAM" von Matricks gemacht (das ist der Founder von Teeworlds).
https://github.com/matricks/bam
Platformunabhaengig und die Buildfiles bestehen aus lua scripts die so aehnlich aufgebaut sind:
settings = NewSettings()
settings.cc.includes:add("include")
settings.cc.optimize = 1
settings.cc.debug = 0
objs = Compile(settings, Collect("*.cpp"))
exe = Link(settings, "my_app", objs)
Wenn man sich den
Buildprozess von Teeworlds anschaut, erkennt man, wie vielseitig BAM angewendet werden kann.