我想将两个示例程序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。
有什么想法吗?
答案 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
时不会安装它们。