Next: , Previous: Conditional Libtool Sources, Up: A Shared Library


7.3.5 Libtoolのコンビニエンスライブラリ

インストールされないlibtoolライブラリをビルドしたいときもあります.こ れらは,libtoolコンビニエンスライブラリ(libtool convenience libraries)と呼ばれ,通常多くのサブライブラリをカプセル化し,後でイン ストールされる大きな一つのライブラリにまとめるときに使用されます.

libtoolコンビニエンスライブラリは,noinst_LTLIBRARIEScheck_LTLIBRARIES,またはEXTRA_LTLIBRARIESでも宣言されま す.インストールされるlibtoolライブラリと異なり,それらはリンク時に -rpathフラグが不要です(実際,これが違うだけです).

noinst_LTLIBRARIESでリストアップされているコンビニエンスライブ ラリは,常にビルドされます.check_LTLIBRARIESにリストアップされ ているものは,make checkのときだけビルドされます.最後に, EXTRA_LTLIBRARIESでリストアップされているライブラリは,明示的に はビルドされません.Automakeはそれらのビルドルールを出力しますが,ライ ブラリがMakefileの依存性に表れない場合はビルドされません(これは, EXTRA_LTLIBRARIESが条件付きコンパイルで使用されるためです).

サブディレクトリのlibtoolコンビニエンスライブラリを,一つの中心となる libtop.laライブラリにまとめる設定例は以下のようになります.

     # -- Top-level Makefile.am --
     SUBDIRS = sub1 sub2 ...
     lib_LTLIBRARIES = libtop.la
     libtop_la_SOURCES =
     libtop_la_LIBADD = \
       sub1/libsub1.la \
       sub2/libsub2.la \
       ...
     
     # -- sub1/Makefile.am --
     noinst_LTLIBRARIES = libsub1.la
     libsub1_la_SOURCES = ...
     
     # -- sub2/Makefile.am --
     # showing nested convenience libraries
     SUBDIRS = sub2.1 sub2.2 ...
     noinst_LTLIBRARIES = libsub2.la
     libsub2_la_SOURCES =
     libsub2_la_LIBADD = \
       sub21/libsub21.la \
       sub22/libsub22.la \
       ...