автоматическое создание пользовательских языков/ сценариев автоматических зависимостей

#automake

#автоматическое создание

Вопрос:

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

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

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

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

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

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

Ответ №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
  

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

Комментарии:

1. Я не совсем понимаю, как использовать биты gnu makefile для автоматически сгенерированных зависимостей.

2. @edA-qamort-ora-y — Я внес правку, которая показывает грубый способ добавления дополнительных зависимостей путем вызова produce-deps . Это будет вызываться при каждом запуске make, но это просто, безопасно и чисто.