Всем привет! Недавно я написал свою систему сборки - Take (C++17, без внешних зависимостей если не считать один header only TOML‑парсер). Идея простая: взять привычную модель Make (именованные цели, зависимости между ними, шелл команды), но выкинуть табы, $@/$< и прочую магию синтаксиса Makefile, а вместо этого настраивать всё через обычный .toml‑файл.
Получилось вот так:
default = "build"
[vars]
CXX = "gcc"
FLAGS = "-O2 -Wall -Wextra"
OUT = "msin"
[build]
desc = "Build msin"
run = [ "${CXX} ${FLAGS} -Iinclude src/main.c src/functions.c -o ${OUT}",
]
[install]
desc = "Install msin (sudo or su)"
run = [ "install -d /usr/local/bin", "install -m 755 ${OUT} /usr/local/bin/msin",
]
[clean]
desc = "Clean build"
run = ["rm -f ${OUT}"]
