2013-05-28 29 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時不會被安裝。