У меня есть список объектов в переменной Makefile с именем OBJECTS, который слишком велик для буфера команд. Поэтому я использую следующий метод для создания файла со списком объектов (для передачи в ar):
objects.lst:
$(foreach OBJ,$(OBJECTS),$(shell echo "$(OBJ)">>$@))
Хотя это работает, оно работает очень медленно (по крайней мере, на Cygwin), и мне не нравится полагаться на команды оболочки и перенаправление.
Кроме того, foreach не предназначен для этой цели - он оценивается перед выполнением любых команд, что означает, что я не могу, например, rm -f objects.lst
перед добавлением.
Есть ли лучший способ? Я не хочу использовать добавочное архивирование, поскольку это вызывает проблемы с несколькими заданиями.
Единственное, о чем я могу думать, - это синтаксический анализ файла Makefile с помощью отдельного сценария для чтения списка объектов или сохранения списка объектов в отдельном файле. Оба решения имеют свои собственные проблемы.