假设有一堆(例如近 200 个)模块都依赖于一个核心模块。所有人都在使用Autotools。
核心模块安装了一个 core.m4 文件,依赖项已经用于各种事情。
所有依赖项在其 install-data-local 规则中也有一些行来生成一些脚本并安装它们,例如
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 吐出一个我可以从 install-data-local 调用的 shell 脚本,但我不确定这是最好的(或最自动化的)方式。
或者,是否有一种简单的方法可以fragment.am
从我的核心模块分发 automake 文件?(这似乎是定义 Python 编译规则的方式。)