2012-03-05 1 views
2

저는 C++을 사용하여 Linux에서 만들고있는 간단한 3D 게임을위한 동적 라이브러리 (.so 파일)를 포함하려고합니다. 이 동적 라이브러리는 Bullet 물리 엔진을 사용하기위한 것입니다.automake 및 autoconf를 사용하는 동적 라이브러리 포함

필자는 automake 및 autoconf를 사용하는 방법에 대한 지식이 매우 부족하여 도움이 될만한 정보를 많이 얻었습니다.

이러한 동적 라이브러리를 포함하도록 다음 파일을 수정하려면 어떻게해야합니까?

AC_INIT(configure.ac) 
AM_INIT_AUTOMAKE(SampleApp, 0.1) 
AM_CONFIG_HEADER(config.h) 

AC_LANG_CPLUSPLUS 
AC_PROG_CXX 
AM_PROG_LIBTOOL 

PKG_CHECK_MODULES(OGRE, [OGRE >= 1.2]) 
AC_SUBST(OGRE_CFLAGS) 
AC_SUBST(OGRE_LIBS) 

PKG_CHECK_MODULES(OIS, [OIS >= 1.0]) 
AC_SUBST(OIS_CFLAGS) 
AC_SUBST(OIS_LIBS) 

AC_CONFIG_FILES(Makefile) 
AC_OUTPUT 

나는 또한 buildit 파일이 움직임의 모든 설정 :

#!/bin/sh 
rm -rf autom4te.cache 
libtoolize --force --copy && aclocal && autoheader && automake --add-missing --force-missing --copy --foreign && autoconf 
./configure && ./makeit 
+0

귀하의 buildit 스크립트가 너무 복잡합니다. libtoolize, aclocal 등을 명시 적으로 호출하지 마십시오. 대신 autoreconf -i –

+0

을 호출하십시오. AC_INIT의 사용법은 극히 오래된 것입니다. 현대적인 autoconf에서 AC_INIT는 3 개의 인수를 취해야합니다 : 프로젝트 이름, 버전, 연락처. 어떤 버전의 autoconf를 사용하고 있습니까? –

+0

AM_PROG_LIBTOOL을 더 이상 사용하지 않아야합니다. 대신 LT_INIT을 사용하십시오. –

답변

0
을 여기
noinst_HEADERS= BaseApplication.h Physics.h GameApplication.h 

bin_PROGRAMS= OgreApp 
OgreApp_CPPFLAGS= -I$(top_srcdir) 
OgreApp_SOURCES= BaseApplication.cpp Physics.cpp GameApplication.cpp 
OgreApp_CXXFLAGS= $(OGRE_CFLAGS) $(OIS_CFLAGS) 
OgreApp_LDADD= $(OGRE_LIBS) $(OIS_LIBS) 

EXTRA_DIST = buildit makeit 
AUTOMAKE_OPTIONS = foreign 

내 configure.ac입니다 : 여기

내 makefile.am입니다

있음 있음 Makefile.am :

OgreApp_LIBADD= -llib1 -llib2 

그게 도움이 되나요?

편집 : -llib1 -llib2OgreApp_LDADD=... 행에 추가하려고 시도합니다. 확실하지 않습니다.

+0

OgreApp_LDADD를 시도하면 오류가 발생합니다. 다음과 같이 LDADD에 파일을 추가합니다. OgreApp_LDADD = $ (OGRE_LIBS) $ (OIS_LIBS) /usr/local/lib/libBulletCollision.so /usr/local/lib/libBulletDynamics.so /usr/local/lib/libBulletMultiThreaded.so 결과는 다음과 같습니다. 글 머리 기호의 샘플 헤더 파일을 포함 할 수 없음. – daedalic

2

이 총알 들어, autocong 매크로 PKG_CHECK_MODULES와 함께 사용할 수있는 시스템에 설치 bullet.pc 파일이 있어야한다, 같은 방식으로 괴물과 OIS가 포함되어 있습니다

# in configure.ac 
PKG_CHECK_MODULES(BULLET, [bullet]) 

# in Makefile.am 
OgreApp_CXXFLAGS= $(OGRE_CFLAGS) $(OIS_CFLAGS) $(BULLET_CFLAGS) 
OgreApp_LDADD= $(OGRE_LIBS) $(OIS_LIBS) $(BULLET_LIBS) 


당신이 더 추가하는 경우
# in configure.ac 
PKG_CHECK_MODULES(DEPENDENCIES, [OGRE >= 1.2 OIS >= 1.0 bullet]) 

# in Makefile.am 
OgreApp_CXXFLAGS= $(DEPENDENCIES_CFLAGS) 
OgreApp_LDADD= $(DEPENDENCIES_LIBS) 

그리고 잭 켈리는 의견에 쓴대로 PKG-설정이있는 경우,> (2010 년 발표) = 0.24, 당신은 돈

'무조건 의존, 당신은이처럼 그룹화하여 두 파일을 간단하게 할 수 있습니다을 사용해야합니다. PKG_CHECK_MODULE 이후의

+1

'PKG_CHECK_MODULES'에 의해 설정된 변수를'AC_SUBST'하지 마십시오. 이미 완료되었습니다. –