С Make я делаю что-то вроде
generated.c: input.txt generator
./generator input.txt > generated.c
Как я могу получить эквивалентную функциональность из автоинструментов? (удаление generate.c при очистке также будет бонусом).
С Make я делаю что-то вроде
generated.c: input.txt generator
./generator input.txt > generated.c
Как я могу получить эквивалентную функциональность из автоинструментов? (удаление generate.c при очистке также будет бонусом).
Я предполагаю, что input.txt
является исходным файлом, который распространяется, что вы не хотите распространять generated.c
(т. е. он должен быть создан каждым пользователем), а generator
– это программа, созданная вашим пакет тоже.
EXTRA_DIST = input.txt
bin_PROGRAMS = prog
noinst_PROGRAMS = generator
# Source files for the generator
generator_SOURCES = generator.c ...
# Source files for prog
prog_SOURCES = prog.c ...
nodist_prog_SOURCES = generated.c
# generated.c is a built source that must be cleaned
CLEANFILES = generated.c
# Build rule for generated.c
generated.c: $(srcdir)/input.txt generator$(EXEEXT)
./generator$(EXEEXT) $(srcdir)/input.txt
В некоторых ситуациях, например при создании файлов заголовков, важно создать файл до компиляции остальных исходных кодов, чтобы его можно было включить. В этом случае вы также должны указать сгенерированный файл в переменной BUILT_SOURCES
(в руководстве Automake есть много примеров в его Раздел встроенных источников. В приведенном выше случае это не обязательно.
EDIT: я исправил приведенный выше пример Makefile.am
, чтобы объявить generator
неустановленной программой.