2013-05-28 30 views
0

我想将两个示例程序A和B包含到现有的库包中。automake和pkg-config条件编译

程序A依赖于libfoo库,而程序B依赖于libbar库。

libfoo和libbar作为pkg-config知道提供。

我希望configure会自动检测libfoo和libbar的存在, ,如果发现libfoo,应该编译程序A,如果找到libbar,应该编译程序B.

这里就是我想在configure.ac:

PKG_CHECK_MODULE([FOO], [libfoo]) 
PKG_CHECK_MODULE([BAR], [libbar]) 

这里是我试图在Makefile.am:

if LIBFOO 
noinst_PROGRAMS += A 
A_SOURCES = ... 
A_CPPFLAGS = $(FOO_CFLAGS) 
A_LDADD = $(FOO_LIBS) 
endif 

if LIBBAR 
noinst_PROGRAMS += B 
B_SOURCES = ... 
B_CPPFLAGS = $(BAR_CFLAGS) 
B_LDADD = $(BAR_LIBS) 
end 

的问题是,我不不知道如何定义谓词,LIBFOO和LIBBAR。

有什么想法?

回答

1

首先,它是PKG_CHECK_MODULES

PKG_CHECK_MODULES([FOO], [libfoo], [have_libfoo=yes], [have_libfoo=no]) 
PKG_CHECK_MODULES([BAR], [libbar], [have_libbar=yes], [have_libbar=no]) 

那么它的AM_CONDITIONAL

AM_CONDITIONAL([LIBFOO], [test "$have_libfoo" = "yes"]) 
AM_CONDITIONAL([LIBBAR], [test "$have_libbar" = "yes"]) 

顺便说一句,因为这些样本程序,建立他们作为noinst_PROGRAMS可能不是你想要的东西,因为他们赢了当调用make install时不会被安装。