условное построение 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.

Есть идеи?


person cinsk    schedule 28.05.2013    source источник


Ответы (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.

person ldav1s    schedule 28.05.2013