Включая динамические библиотеки с использованием automake и autoconf - PullRequest
2 голосов
/ 05 марта 2012

Я пытаюсь включить некоторые динамические библиотеки (файлы .so) для простой 3D-игры, которую я создаю для Linux с использованием C ++. Эти динамические библиотеки предназначены для использования физического движка Bullet.

У меня очень ограниченные знания о том, как использовать automake и autoconf, поэтому любая помощь будет высоко ценится.

Как я могу изменить любой из следующих файлов, чтобы включить эти динамические библиотеки?

Вот мой makefile.am:

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:

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

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

Для Bullet в вашей системе должен быть установлен файл bullet.pc, который вы можете использовать с макросом автоконга PKG_CHECK_MODULES, так же, как включены OGRE и 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-config> = 0,24 (выпущено)в 2010 году), вам не нужно использовать AC_SUBST после PKG_CHECK_MODULE.

0 голосов
/ 05 марта 2012

В вашем Makefile.am:

OgreApp_LIBADD= -llib1 -llib2

Это помогает?

Редактировать: или попробуйте добавить -llib1 -llib2 в строку OgreApp_LDADD=..., я сам не уверен.

...