Есть ли общее правило, чтобы указать правило для чего-то, что переходит от чего-то с расширением к чему-то без расширения? (в данном случае от '.in' до '')?
У меня есть проект, использующий automake. У меня есть несколько шаблонов конфигурационных файлов, которые нужно заменить перед их установкой. Например, у меня есть файл foo.ini.in, который я хочу использовать для создания foo.ini. У меня есть несколько таких, разбросанных по кодовой базе. Однако для каждого из них мне нужно создать собственное правило Makefile, чтобы заставить их работать. Есть ли способ лучше? В настоящее время я делаю это в Makefile.am:
bazdir=$(libdir)/@PACKAGE_NAME@/baz
EXTRA_DIST = foo.ini.in bar.ini.in
CLEANFILES = foo.ini bar.ini
foo.ini: foo.ini.in
sed -e 's|@LIBDIR@|$(bazdir)|g' $< > $@
bar.ini: bar.ini.in
sed -e 's|@LIBDIR@|$(bazdir)|g' $< > $@
Это прекрасно работает, но мне нужно дублировать правило для каждого файла. Я хотел бы написать одно правило, которое будет заменять любые файлы «ini.in» файлами «ini». Я пробовал:
%.ini.in: %.ini
sed ....
но autoconf жалуется, что подстановка шаблона % является непереносимым gnumake-измом. тоже не любит
.ini.in.ini:
sed .....
.. который я не могу обвинить в том, что он не понравился, потому что я даже не могу разобрать это.
Есть ли способ сделать это?
ПРИМЕЧАНИЕ. Я не могу использовать AC_CONFIG_FILES для этой подстановки, поскольку в этом случае 'bazdir' не раскрывается полностью.
bazdir
нельзя полностью развернуть? Поскольку переменные$libdir
и$PACKAGE_NAME
могут быть установлены скриптом configure? - person Brett Hale   schedule 01.06.2013