次: , 前: Conditional Libtool Libraries, 上: A Shared Library


7.3.4 条件的ソースを用いたLibtoolライブラリ

ライブラリでのソースの条件的コンパイルは,プログラムでのソースの条件的 コンパイルと同じ方法で達成することが可能です(see Conditional Sources).違いは,_LDADDの代わりに_LIBADDを使用し, libtoolオブジェクト(.loファイル)について記述することだけです.

そのため,Conditional Sourceshelloの例を真似てみると, 以下のようなMakefile.amを用いてhello-linux.cまたは hello-generic.cのいずれかを使用してlibhello.laライブラリ をビルドすることが可能でしょう.

     lib_LTLIBRARIES = libhello.la
     libhello_la_SOURCES = hello-common.c
     EXTRA_libhello_la_SOURCES = hello-linux.c hello-generic.c
     libhello_la_LIBADD = $(HELLO_SYSTEM)
     libhello_la_DEPENDENCIES = $(HELLO_SYSTEM)

そして,$(HELLO_SYSTEM)./configurehello-linux.loまたはhello-generic.loのいずれかに設定され ていることを確かめて下さい.

また,Automake条件式を使用して以下のように簡単にすることも可能でしょう.

     lib_LTLIBRARIES = libhello.la
     libhello_la_SOURCES = hello-common.c
     if LINUX
     libhello_la_SOURCES += hello-linux.c
     else
     libhello_la_SOURCES += hello-generic.c
     endif