0

我想将两个示例程序 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。

任何想法?

4

1 回答 1

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

于 2013-05-28T23:49:58.530 回答