2016-05-02 6 views
1

私は複数のバイナリ(コマンドラインツールを使ったrepo)を含むプロジェクトをビルドするためにAutotoolsを使っています。複数のプログラムのAutomakeリンク

いくつかのライブラリを特定のプログラムのみにリンクすることはできますか?

例:
マイMakefile.am:

bin_PROGRAMS= prog1 prog2 
prog1_SOURCES=prog1.cpp 
prog2_SOURCES=prog2.cpp 

prog1_LDADD= -llib-only-for-prog1 

LDADD=-llib-for-all-projects  # this does not work 
#AM_LDFLAGS=-llib-for-all-projects  # this does not work either 
#LINK=-llib-for-all-projects  # this does not work either 

私はprog1prog2ながら-llib-only-for-prog1-llib-for-all-projects
に対してリンクさせたい - だけ-llib-for-all-projectsに対して。

オートツールでどのように達成できますか?

+0

[AM_DEFAULT_SOURCE_EXT = .cpp'](http://www.gnu.org/software/automake/manual/automake.html#Default-_005fSOURCES)もここで便利です。 –

+0

@BrettHaleありがとうございます。私はレポに多くのプログラムを持っていますが、いくつかのソースは1つ以上のソースを使用しています。私は ' _SOURCES'を指定していない場合、これがうまくいくことを理解しています。もし私がそうすれば上書きされますか? – lewiatan

答えて

2

基本的に、覚醒剤プログラム(prog1_LDADD)にLDADDを追加すると、一般的なLDADDオプションは無視されます。私にとって

次作品:

bin_PROGRAMS=prog1 prog2 prog3 
prog1_SOURCES=prog1.c 
prog2_SOURCES=prog2.c 
prog3_SOURCES=prog3.c 

LDADD=-llib-for-all-projects 
prog1_LDADD=-llib-only-for-prog1 $(LDADD) 

ノート余分$(LDADDprog1_LDADD -lineインチ

+0

私は 'prog1_LDADD'が' LDADD'を上書きすることを知らなかった。これは私を助けます。ありがとう – lewiatan

関連する問題