2017-03-21 7 views
1

J'ai besoin de lier libmagic à mon projet qui est construit avec autotools.bonne façon de lier une bibliothèque avec des autotools

ma solution actuelle est: LIBS+="-lmagic" dans configure.ac

mais je pense que d'une manière plus appropriée pour atteindre cet objectif serait d'utiliser PKG_CHECK_MODULES macro dans configure.ac et LDADD = @[email protected] dans Makefile.am, malheureusement cela ne fonctionne pas.

voici ce que je reçois de ./configure

configure: error: Package requirements (magic) were not met: 

No package 'magic' found 

Consider adjusting the PKG_CONFIG_PATH environment variable if you 
installed software in a non-standard prefix. 

Je pense que cela a quelque chose à voir avec l'absence de libmagic dans pkg-config, des idées?

Répondre

1

Je pense que d'une manière plus appropriée pour atteindre cet objectif serait d'utiliser PKG_CHECK_MODULES macro configure.ac [...]

Seulement si vous avez réellement un fichier de données pkg-config pour libmagic, et même puis there is some controversy around PKG_CHECK_MODULES. Autant que je sache, the implementation you are probably using ne fournit pas de fichier pkg-config. Vous pourriez écrire le vôtre, bien sûr, mais cela irait à l'encontre du but. Si vous comptez sur l'installation de l'en-tête et de la bibliothèque dans l'un des emplacements standard - ce qui est conventionnel et éminemment raisonnable - alors une manière plus idiomatique de configurer la construction serait d'avoir un test configure leur présence. Par exemple,

AC_CHECK_HEADER([magic.h], [], [ 
    AC_MSG_ERROR([required header magic.h not found]) 
]) 
AC_SEARCH_LIBS([magic_open], [magic], [], [ 
    AC_MSG_ERROR([required library libmagic not found]) 
]) 

Notez que AC_SEARCH_LIBS() sera automatiquement préfixer -lmagic à LIBS si elle se trouve. Vous pourriez obtenir un colombophile en fournissant configure options par lesquelles un utilisateur pourrait spécifier des emplacements alternatifs pour l'en-tête et la bibliothèque, mais cela ne semble pas être ce que vous cherchez, et il semble que ce serait exagéré pour libmagic.

0

Vous avez besoin d'un fichier pkgconfig pour libmagic. S'il n'y a pas magic.pc dans votre PKG_CONFIG_PATH, vous devez écrire une macro autoconf personnalisée pour définir MAGIC_LIBS.