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를 정의하는 f}을 알지 못합니다.

아이디어가 있으십니까?

답변

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입니다 : BTW

AM_CONDITIONAL([LIBFOO], [test "$have_libfoo" = "yes"]) 
AM_CONDITIONAL([LIBBAR], [test "$have_libbar" = "yes"]) 

, 이러한 샘플 프로그램은 아마 noinst_PROGRAMS로 건물이기 때문에되어 있지 그들이 원하기 때문에 당신이 원하는 것을 make install이 호출 될 때 설치되지 않습니다.

관련 문제