DimAlt писал(а):Хотелось этого
в разные файлы - это уже надо править makefile
...
Свою проблему решил, хоть и через одно место, запускаю программу, которая мониторит изменение выходного файла *.hex и переименовывает его анализируя дефине в *.h
Действительно, через

Т.е. в каждый конкретный запуск make собирается один вариант. Это заменяется на такое:
Проще, если в исходниках всё через VARIANT, как указал выше ARV. Только опредлять его в Makefile
Код: Выделить всё
VARIANT = 2
TARGET := tst-$(VARIANT)
# ну или как там имя проекта у Вас задаётся
OBJDIR := ./obj-$(VARIANT)
CFLAGS += -DVARIANT=$(VARIANT)
И для смены варинта прошивки меняем VARIANT в Makefile
Поскольку каталог для объектных файлов тоже зависит от этой пременной, объектники не перепутаются. Но я всё равно всегда ставлю зависимость объектников от Makefile, чтобы при смене опций окмпиляции автоматически перекомпилировалоьс всё
Для того, чтобы собрать одним махом все версии, можно сделать командный файл
build_all.bat
Код: Выделить всё
make VARIANT=1
make VARIANT=2
make VARIANT=3
make VARIANT=4
определение переменной в командной строке перекроет то, что в файле. При этом даже если была пропиана зависимость объектников от Makefile, полной перекомпиляции не будет, так как сам Makefile не меняется. Можно в батнике ещё и чистку заказать.
rebuild_all.bat
Код: Выделить всё
make VARIANT=1 clean all
make VARIANT=2 clean all
make VARIANT=3 clean all
make VARIANT=4 clean all
Само собой, в Makefile должна быть прописана традиционная цель по умолчанию all
а уже она автоматически по TARGET будет собирать нужный вариант.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.