Automakeはオブジェクトを生成するようには設計されていません。プログラムまたはライブラリを構築します。 それはあなたが単一のオブジェクトファイルではなく、何か他のものをコンパイルしたいと思いますなぜ知らなくても、あなたの質問に答えるのは難しいです。おそらくあなたの "本当の"問題に対するより洗練された答えがあるでしょう。
あなたが書くことができMakefile.am
が結果Makefile
だけlibThread.o
を含むライブラリlibThread.a
を建設する
noinst_LIBRARIES = libThread.a
libThread_a_SOURCES = Thread.cc Thread.h # No need to put headers in EXTRA_DIST
ある*.a
ライブラリは単にオブジェクトファイルの集合全くリンク関与がないですので、ANS。 上記Makefile.am
はまた、あなたが好きなら、あなたがbuild:
ルールを追加することができますので、libThread.o
をコンパイルするためのルールを含むようにMakefile
を放出される原因となります。
あなたは本当にAutomakeはライブラリを構築し、このコンパイルルールを放出しますが、しないようにしたい場合は、あなたが
EXTRA_LIBRARIES = libThread.a # EXTRA here means "output build rules but don't
# build unless something depends on it".
libThread_a_SOURCES = Thread.cc Thread.h
build: Thread.$(OBJEXT)
は今、あなたが明示的として、あなたはmake build
を入力した場合にのみ構築されるファイルThread.$(OBJEXT)
を必要としていると行くことができます元のMakefile
にあります。
(Automakeは.$(OBJEXT)
というよりも、.o
変種DOSで.obj
のような拡張機能をサポートするために、使用しています。)
出典
2009-06-15 16:33:10
adl
など、詳細については-pにgmakeと暗黙的、明示的なルールのトピックではgmakeのためTexinfoマニュアルを見てみましょう、パターン、サフィックス。アドバイスをいただきありがとうございます。 –