2017-01-19 8 views
1

私はautomakeに関連した次の問題があります。私は助言/ヒントに満足しています。bin_PROGRAMSとそのソースに基づいたターゲットの自動生成

のはnプログラムを作成し、一般的なMakefile.amてみましょう(例では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

パターンルールが必要なので、残念ながら私はこれが厳密に移植可能なmakefileでは可能ではないと思います。

パターンルールは次のようになります。

%.1: $(FIXME_something_goes_here) 
     $(AM_V_GEN)$(srcdir)/some-script $^ > [email protected] 

(やっvpathが構築したときに、あなたのメイクファイルが動作することを確認するために、$(srcdir)を忘れないでください...)

難しい部分は何ですか$(FIXME_something_goes_here)を入力します。

$($(basename $(@F))_SOURCES) 

あなたがプログラム名で、このような-など違法な識別子の文字を持っていたならば、あなたは思いますけれども:など$(p1_SOURCES)などAutomakeのディレクティブは普通のMakefileの変数なので、あなたは自動的にこのようなもので、それを決定することができるはずですそれらをすべて_にする必要があります。これは少し複雑な表現を必要とします。

関連する問題