Makefile 我可以在configure.ac中定义安装规则/安装挂钩吗

Makefile 我可以在configure.ac中定义安装规则/安装挂钩吗,makefile,installation,autotools,autoconf,m4,Makefile,Installation,Autotools,Autoconf,M4,假设有一堆(例如近200个)模块都依赖于一个核心模块。所有人都在使用自动工具 core模块安装一个core.m4文件,家属已经将该文件用于各种用途 所有依赖项在其安装数据本地规则中也有一些行,用于生成一些脚本并安装它们,例如 core_stuffdir=$(prefix)/share/core/stuff/ install-data-local: generate-stuff stuff.xml test -d $(DESTDIR)$(core_stuffdir

假设有一堆(例如近200个)模块都依赖于一个核心模块。所有人都在使用自动工具

core模块安装一个core.m4文件,家属已经将该文件用于各种用途

所有依赖项在其安装数据本地规则中也有一些行,用于生成一些脚本并安装它们,例如

core_stuffdir=$(prefix)/share/core/stuff/

install-data-local:
        generate-stuff stuff.xml
        test -d $(DESTDIR)$(core_stuffdir) || mkdir $(DESTDIR)$(core_stuffdir)
        stuff=`xmllint --xpath '//stuff[@install="yes"]/@name' stuff.xml`; \
            $(INSTALL_DATA) $$stuff $(DESTDIR)$(core_stuffdir); \
            rm $$stuff
        …
        $(INSTALL_DATA) other-module-specific-stuff …
        …
我想删除这五行代码,它们目前在大约200个文件中被冗余复制,并在core.m4中定义这些代码行。依赖项应该能够说出类似于
SOMEVAR:somevalue
(或者类似的简短内容,最坏情况下是install data local中的一行内容),并在make install期间执行这些行

是否有一种很好的方法可以在core.m4中定义这些行,并将它们提供给Makefile.am?我在网上找不到任何类似的例子

我现在能想到的唯一解决方案是m4抛出一个shell脚本,我可以从install data local调用它,但我不确定这是最好的(或最自动的)方式


或者,有没有一种简单的方法可以从我的核心模块分发automake
fragment.am
文件?(这似乎是定义Python编译规则的方式。)

经过一些挖掘,我发现 它有一个类似问题的解决方案(我无法获得 这里提到的AC_配置_文件解决方案可以工作)

因此core.m4现在定义coremku包括:

AC_DEFUN([CORE_MKINCLUDE],
[
  AC_SUBST_FILE(core_include)
  core_include=$srcdir/core_include.am

  cat >$srcdir/core_include.am <<EOF

core_stuffdir=\$(prefix)/share/core/stuff/
install-stuff:
        generate-stuff stuff.xml
        test -d \$(DESTDIR)\$(core_stuffdir) || mkdir \$(DESTDIR)\$(core_stuffdir)
        stuff=\`xmllint --xpath '//stuff@<:@@install="yes"@:>@/@name' stuff.xml`; \\
                \$(INSTALL_DATA) \$\$stuff \$(DESTDIR)\$(core_stuffdir); \\
                rm \$\$stuff

EOF

])
至少是一个进步

@core_include@
install-data-local: install-stuff