Сборка C и Ассемблера без боли: релиз ForgeZero 1.7.0

Все мы знаем, какая боль — настраивать CMake для маленького проекта на Си или асме. Хочется просто писать код, а не гуглить синтаксис конфигов 20-летней давности. Я написал ForgeZero именно за этим: чтобы сборка была такой же простой, как go build. Запустил — собралось. Без ритуалов.

v1.6 — то, что раздражало каждый день

Начну с fz init. Раньше нужно было вручную создавать конфиги, писать README — рутина, которая отнимала время ещё до первой строчки кода. Теперь это одна команда и секунда времени.

Да, я всё-таки добавил поддержку .fz.yaml — просто потому что для крупных проектов без нормального конфига неудобно. Прописываешь зависимости, флаги, формат вывода — и больше к этому не возвращаешься. Вместе с ним появился .fzignore, аналог .gitignore: указываешь, что не нужно трогать при сборке, и fz это уважает.

Добавил -format bin — сборку плоских бинарников для загрузчиков и прошивок, где ELF-заголовок только мешает.

Секция libs в конфиге избавила от необходимости каждый раз вручную прописывать -lm, -lc и прочее. Ну и кастомные флаги flags.cc — хочешь -O3 -march=native, просто пишешь в конфиге.

v1.7 — для тех, у кого проекты уже не маленькие

Главное — параллельная сборка -j N. На 12-ядерном процессоре сборка разлетается по потокам быстрее, чем успеваешь моргнуть. Для системного софта, где каждый файл важен — это спасение.

Добавил поддержку линкер-скриптов (-T и -Ttext). Без этого нормально работать с ОС и встраиваемыми системами просто нереально — нужен контроль над адресами, теперь он есть.

fz -shell — интерактивный режим. Меняешь параметры, собираешь, чистишь, смотришь результат в реальном времени. Удобно, когда отлаживаешь что-то и не хочется каждый раз набирать команду заново.

И наконец — нормальная поддержка C++. .cpp, .cc, .cxx компилируются с теми же строгими флагами, что и Си. Без компромиссов.

Заходите

Проект полностью опенсорсный. Если тоже устал от перегруженных билдеров — fzforum.duckdns.org, там документация, примеры и форум. Подискутируем.

P.S. Документация пока на английском, так как проект международный, но на форуме общаемся на любом удобном.

Установка:
go install github.com/forgezero-cli/ForgeZero/cmd/fz@latest
Документация

1
Начать дискуссию