2012-01-26 16 views
0

を配布しないAutotool群 - 私は、ディレクトリ構造を持ってコンパイルするが、

src 
\__lib_foo 
| \__ foo.c foo.h 
\__ main 
     \__ main.c main.h 

としてメインはメインアプリケーションとmain.cのがfoo.c.で定義されたいくつかの関数を使用しています 私の必要条件は「lib_fooはコンパイルされていなければならないが、分散されていなければならない」ということです。事前に

おかげで

答えて

0

コンパイルされたプログラムが配布されることはありませんが、コンパイルされたプログラムのソースはもちろん、一般的に配布されます。 (源がないソース配布にはあまり意味がありません。)nodist_*_SOURCES(automakeマニュアルの章14.2細粒度配布制御を参照)もあります。上書きされない限り、デフォルトではBUILT_SOURCESがnodistであることにも注意してください。

bin_PROGRAMS = foo 
nodist_foo_SOURCES = foo.c 
BUILT_SOURCES = foo.c 

しかし:

3
bin_PROGRAMS = foo 
foo_SOURCES = foo.c 
BUILT_SOURCES = foo.h 

autotoolsのは、ソースコード、コンパイルされていない製品を配布するためのフレームワークを提供します。それがあなたの質問であれば、バイナリパッケージ(rpm、deb、pkgなど)を構築し、それを配布するために、autotooledプロジェクトを簡単に使うことができます。一方、foo.cを使用してビルド中にメインが静的にリンクされているコンビニエンスライブラリを構築する方法を探しているだけなら、(automakeを使用していると仮定して)これをMakefileに入れたいとします。 am:

foo.cの名前をlibfoo.cに変更すると、3行目は必要ありません。

--edit質問はあなたが同じディレクトリにfoo.cのとmain.cのを持っていない場合は、関与もう少し仕事があり、平坦でないディレクトリにstructure--

を表示するように編集された後。トップレベル/ Makefile.amで :

 
# You must list lib_foo first 
SUBDIRS = lib_foo main 
lib_foo/Makefile.amに

 
noinst_LIBRARIES = libfoo.a 
libfoo_a_SOURCES = foo.c 

及びメイン/ Makefile.amに

 
bin_PROGRAMS = main 
main_LDADD = ../lib_foo/libfoo.a 
関連する問題