Это очень хорошо что тебя корежить начало от зоопарка скриптов.
Систем управления задачами довольно много. Они есть на разных языках. Те же MSBuild, cmake, Gradle, Phing, Ant, Zig и.т.д. являются подмножеством множества систем управления задачами. Поэтому нередко люди берут тотже cmake для решения описанных у тебя в вопросе задач. cmake для решения подобных задач не подходит в силу своей организации и изначального предназначения, но люди обычно плачут, колются и продолжают сидеть на кактусе.
Между тем, есть целый класс конкретно систем управления задачами. Такие системы предоставляют только инструменты менеджмента, но не дают никакого начального набора задач, в отличие от того же cmake/Gradle/...
К таким системам менеджмента задач сразу и легко можно отнести
Doit,
Schedule и их
аналоги.
Я работаю с Doit уже больше 10 лет, периодически помогаю его развивать и всячески содействую его разработке.
Для меня Doit стал решением всех описанных у тебя задач и является решением огромного числа неописанных у тебя задач автоматизации и сопровождения процесса разработки проектов.
Doit работает быстро, эффективно, умеет пропускать задачи по условиям инкрементальности, имеет очень гибкую систему настройки поведения и, что главное, от начала и до конца весь написан на Python - одном единственном языке. Он легко интегрируется в Jenkins и позволяет полностью автоматизировать подавляющую часть задач поддержки разработки. Эта система управления задачами является самой гибкой и успешно приспосабливается к самым разным задачам автоматизации ручного труда.
Только не надо пытаться пробовать заменить абсолютно всё на что-то одно. Первое правило кроссплатформенной разработки: Под каждую платформу сборка должна быть максимально нативной. Это значит что в процессах есть нативные и сторонние подходы. Крайне желательно чтобы для целевой платформы все делалось максимально нативными методами. А система управления задачами должна только запускать это всё, как рядовую задачу.