automake автоматические зависимости пользовательский язык / скрипты - PullRequest
3 голосов
/ 07 ноября 2011

Мне нужно немного обработать файлы в Automake, и я не могу понять, как это сделать правильно (используя правила automake в gnu make extensions).Например, у меня есть файл с именем refName.in и я хочу произвести вывод refName.out .У меня есть две соответствующие командные строки:

produce-out refName.in refName.out
produce-deps refName.in

Первая просто берет входной файл и производит вывод.Второй содержит список зависимостей для файла.

Что я должен делать в Automake, чтобы эта настройка работала?Мне бы хотелось иметь полное отслеживание зависимостей, так что если какой-либо файл в списке, созданный product-deps , вызовет product , который будет вызван.

(ПРИМЕЧАНИЕ. У меня нет проблем с изменением работы этих команд. Одна команда может выдавать выходные данные и зависимости при необходимости. Также могут быть изменены различные параметры командной строки и т. Д.)

(PS: если нужно, расширение GNU make вполне нормально. Я уже использую шаблонные правила в Makefile.am и других расширениях.)

1 Ответ

3 голосов
/ 07 ноября 2011

Единственное, что вам нужно для этого - это добавить встроенный файл в BUILT_SOURCES:

BUILT_SOURCES := refName.out

# You might well want refName.in in EXTRA_DIST
EXTRA_DIST := refName.in

# then any standard Make rules will do:
refName.out: refName.in $(shell produce-deps refName.in)
        produce-out refName.in refName.out

Если вы хотите более сложный способ создания зависимостей,можете использовать эти правила с GNU make include, что приведет к запуску produ-deps только при отсутствии refName.deps или изменении refName.in:

refName.deps: refName.in
        echo 'ref-deps := "' $(shell produce-deps refName.in) '"' > refName.deps

include refName.deps

refName.out: refName.in $(ref-deps)
        produce-out refName.in refName.out

Вы можете сделать эти правила общими с обычным GNU make % rules.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...