automake和pkg-config条件构建

时间:2013-05-28 20:04:19

标签: automake pkg-config

我想将两个示例程序A和B包含到现有的库包中。

程序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 个答案:

答案 0 :(得分: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"])

BTW,因为这些是示例程序,将它们构建为noinst_PROGRAMS可能不是您想要的,因为在调用make install时不会安装它们。