Я работаю над проектом на ассемблере с использованием GNU bintools 2.25, созданного для цели m68k-elf
, с GNU make
3.81 обработки сборки. (Поскольку это проект только для сборки, у меня нет gcc
, построенного для m68k
.)Как сделать GNU только как выходные зависимости?
При уточнении моей системы сборки я хотел бы иметь возможность автоматически генерировать список зависимостей для каждой моей сборки файлы, похожие на семейство опций -M*
на gcc
.
я обнаружил, что моя копия m68k-elf-as
поддерживает -MD
вариант для списка зависимостей, поэтому я добавил следующее правило к моему Makefile
:
%.d: %.asm
$(AS) --register-prefix-optional -m68000 -MD [email protected] $(ASFLAGS) $<
Хотя это в основном работает, есть два конкретных вопроса, я с ним ,
-MD
вариант требует имя файла для записи зависимостей; Я хотел бы, чтобы это перешло в STDOUT, поэтому я могу массировать егоsed
, прежде чемmake
взглянет на него. Я попытался дать ему одну тире (-
), но он создает файл с этим именем вместо того, чтобы направлять его в STDOUT.Даже с включенной опцией
-MD
,as
пытается собрать исходный код, который может вызвать ошибку и остановить весь процесс сборки. Я ожидал бы, что он будет выводить зависимости вместо сборки кода, а не выполнять оба действия.
Хотя это немного больше, чем раздражали прямо сейчас, я могу видеть, что существенно влияет на мой строит, поскольку проект становится все больше, особенно последний. Есть ли способ получить as
для вывода зависимостей, не пытаясь собрать код?
У меня нет ответов для вас, кроме взлома кода. Но я укажу, что «генерировать зависимости без сборки кода» отражает устаревшую модель управления предварительными условиями. Модель, описанная в руководстве GNU, является неоптимальной во многих отношениях. Посмотрите http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/ для лучшей модели.Это не решит проблему «выход на stdout», но она решит ваши «выходные данные только без сборки». Первый может быть разрешен «sed -i». – MadScientist