автоматизировать автоматические зависимости пользовательского языка/скриптов

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

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

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

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

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

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


person edA-qa mort-ora-y    schedule 07.11.2011    source источник


Ответы (1)


Единственное, что вам нужно для этого сделать, это добавить собранный файл в 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

Если вам нужен более сложный способ выполнения зависимостей, вы можете использовать эти правила с include, что вызовет запуск product-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 составляют %.

person Flexo    schedule 07.11.2011
comment
Я не понимаю, как делать биты gnu makefile для автоматически сгенерированных зависимостей. - person edA-qa mort-ora-y; 07.11.2011
comment
@edA-qamort-ora-y - я внес правку, которая показывает грубый способ добавления дополнительных зависимостей путем вызова produce-deps. Он будет вызывать это каждый раз при запуске, но это просто безопасно и чисто. - person Flexo; 07.11.2011