是否有一个通用的规则来为从有扩展名的东西到没有扩展名的东西指定一个规则?(在这种情况下,'.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' 没有完全展开。