2013-05-28 2 views
0

Я хочу включить две программы-примеры A и B в существующие пакеты библиотек.automake и условное построение pkg-config

программа A зависит от библиотеки libfoo, а программа B зависит от библиотеки libbar.

libfoo и libbar предоставляются как информированные pkg-config.

И я хочу, чтобы эта конфигурация автоматически обнаружила существование 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"]) 

BTW, так как эти примеры программ, выстраивая их в noinst_PROGRAMS, вероятно, не то, что вы хотите, так как они выиграли Не устанавливается, когда вызывается make install.