Наименование программы в EXTRA_PROGRAMS
не приводит к ее включению в сборку.Эта переменная может рассматриваться как объявление программ, которые могут быть включены в сборку, но не указаны явно ни в одной другой переменной *_PROGRAMS
.На самом деле создание их обычно включает configure
замен.Это помогает удовлетворить потребности Automake в статических знаниях всех целей.
Если файл, который будет создан, будет установлен вместе с программным обеспечением (возможно, после пользовательской модификации), то нужно просто назвать егокак обычная цель, и предоставьте для нее правило сборки.Возможно, что-то вроде этого:
sysconf_DATA = config/foo.conf
EXTRA_SOURCES = config/foo.conf.orig
CLEANFILES = config/foo.conf
config/foo.conf: config/foo.conf.orig
cp -p $< $@
Включение файла .orig
в число EXTRA_SOURCES
гарантирует, что он будет включен, когда вы make dist
, а я думаю, вам нужно явно указать имявстроенный файл в CLEANFILES
, если вы хотите, чтобы на него влияли make clean
.
Если по какой-то причине это не соответствует вашим потребностям , то в Automake есть несколько довольно общие положения для прикрепления ваших собственных правил сборки .Используя их, вы можете сделать так, чтобы ваш файл создавался следующим образом:
EXTRA_SOURCES = config/foo.conf.orig
all-local: config/foo.conf
config/foo.conf: config/foo.conf.orig
cp -p $< $@
Вы также можете использовать некоторые или все install-data-local
, uninstall-local
и либо clean-local
, либо distclean-local
..
Кроме того, обратите внимание
- Определение зависимости для встроенного файла конфигурации, обеспечивающее повторное копирование файла при изменении файла модели.
- Использование
$<
в правиле сборки для ссылки на файл конфигурации модели.Это помогает поддерживать сборки из исходного кода.