我有以下与automake相关的问题,我很乐意提供任何建议/提示。
让我们有一个Makefile.am
来创建n
个程序(例如前2个):
bin_PROGRAMS=p1 p2
p1_SOURCES=a1.c a2.c
p2_SOURCES=b1.c b2.c
我需要找到一些可以包含在任何Makefile.am中的“魔法”,为所有bin_PROGRAMS
生成类似的内容:
p1.1: a1.c a2.c
./some-script a1.c a2.c > p1.1
p2.1: b1.c b2.c
./some-script b1.c b2.c > p2.1
有可能吗?理想情况下以某种POSIX方式...... 谢谢你的任何想法。
答案 0 :(得分:0)
不幸的是,我不认为这在严格的可移植makefile中是可行的,因为你需要一个模式规则。
模式规则如下所示:
%.1: $(FIXME_something_goes_here)
$(AM_V_GEN)$(srcdir)/some-script $^ > $@
(不要忘记$(srcdir)
,以确保你的makefile在进行vpath构建时有效......)
困难的部分是$(FIXME_something_goes_here)
的内容。由于$(p1_SOURCES)
之类的Automake指令只是普通的Makefile变量,因此您应该可以使用以下内容自动确定它:
$($(basename $(@F))_SOURCES)
虽然如果你的程序名中有-
这样的非法标识字符,那么你需要将它们全部转换为_
,这将涉及更复杂的表达。