2009-06-30 7 views
2

Je sais créer un projet ou créer une bibliothèque à l'aide d'autoconf. Ce que je veux faire est de générer une bibliothèque statique et utiliser cette bibliothèque pour construire un projet dans une seule installation configure/make/make.Génération d'une bibliothèque statique et d'un exécutable avec une seule installation (autoconf)

Je souhaite que certains fichiers source soient placés dans la bibliothèque et que le reste soit compilé en utilisant cette bibliothèque. Comment modifier les fichiers makefile.am et configure.ac pour le faire fonctionner?

Répondre

6

La méthode la plus simple consiste à utiliser libtool et automake "convenience libraries". Voici un exemple minimal pour Makefile.am

lib_LTLIBRARIES = libExample.la 
libExample_la_SOURCES = lfile1.C 
bin_PROGRAMS = test 
test_SOURCES = tfile1.C 
test_LDADD = libExample.la 

pour configure.ac

AC_INIT(test, 1.0) 
AC_CONFIG_MACRO_DIR([m4]) 
AM_INIT_AUTOMAKE([foreign]) 
AC_PROG_CXX 
AC_PROG_LIBTOOL 
AC_SUBST(LIBTOOL_DEPS) 
AC_LTDL_DLLIB 
AC_CONFIG_FILES([Makefile]) 
AC_OUTPUT 

Cela va construire à la fois une libExample de bibliothèque statique et dynamique dans le répertoire .libs.
Si vous voulez seulement une bibliothèque statique, vous pouvez passer --disable-shared à configure.

+0

Je reçois cette erreur lors de l'exécution automake: src/Makefile.am: 5: variable 'libsadspider_la_SOURCES 'est défini, mais aucun programme ou src/Makefile.am: 5: la bibliothèque a' libsadspider_la' comme nom canonic (faute de frappe possible) –

+0

Il semble que vous n'ayez pas libsadspider.la listé dans lib_LTLIBRARIES, ou il est mal orthographié. – KeithB

Questions connexes