Я работаю над некоммерческим встроенным кодом, который работает на ARM и, следовательно, имеет дело с различием между режимами ARM и THUMB.Текущая система сборки использует статические шаблонные правила, чтобы определить, компилировать ли файлы в режиме ARM или THUMB.
$(ACOBJS) : %.o : %.c
@echo
$(CC) -c $(CFLAGS) $(AOPT) -I . $(IINCDIR) $< -o $@
$(TCOBJS) : %.o : %.c
@echo
$(CC) -c $(CFLAGS) $(TOPT) -I . $(IINCDIR) $< -o $@
Где ACOBJS - это список выходных объектов, которые должны быть в режиме ARM и одинаковы для режимов TCOBJS и Thumb.Эти списки создаются из списка источников обычным образом
ACOBJS = $(ACSRC:.c=.o)
TCOBJS = $(TCSRC:.c=.o)
. В настоящее время это приводит к тому, что объектные файлы из сборки разбросаны по дереву исходного кода, чего я особенно не желаю.Я пытался настроить это для сборок из дерева, но не смог заставить это работать.Мне не обязательно полностью использовать работающие сборки дерева, но я хотел бы, по крайней мере, иметь возможность использовать выходной каталог, в который в конечном итоге попадают все промежуточные файлы.Какова наилучшая стратегия для достижения этой цели в этих ограничениях?
Один из вариантов, который я рассматриваю, - это использовать либо automake, либо весь набор инструментов autotools для создания make-файла.Казалось бы, это поддерживает создание типа make-файла, который я хочу, но кажется излишним.Кажется также, что между автоинструментами, которые предназначены для портативных сборок, и встроенными системами с «голым металлом», может существовать несоответствие импеданса.