Forum Programmation.autre Détecter l'emplacement d'une bibliothèque et de ses entêtes

Posté par  (site web personnel) .
Étiquettes : aucune
0
19
mai
2006
Bonjour,

J'utilise les autotools pour gérer la configuration de sources (C) dont je m'occupe. Une partie du code doit être compilé en utilisant la bibliothèque truc-muche (ici netcdf) Sur certains systèmes, cette bibliothèque a ses entêtes dans /usr/include et ses .so dans /usr/lib Dans ce cas, j'ai mis dans mon configure.in :

AC_CHECK_HEADER([netcdf.h], [netcdf="yes"], [netcdf="no"])

mes sources ont un
#include <netcdf.h>
et l'édition de lien se fait avec
-lnetcdf


Jusqu'ici tout va bien. Mais selon les distribution, ces bibliothèques s'installent par fois dans des sous répertoires (dont le nom varie avec la distribution). Par exemple sous Fedora, netcdf ce trouve dans /usr/include/netcdf-3/ et son .so idem.

Finalement ma question : comment est-ce que je fais pour détecter dans mon configure.in où ce trouve netcdf.h et libnetcdf.so?

La solution trouvée sur certains forum de faire :
CFLAGS=-I/usr/include/netcdf-3 LDFLAGS=-L/usr/lib/netcdf-3 ./configure

me paraît un peu trop cochonne.
  • # google ?

    Posté par  . Évalué à 1.

    Une recherche "netcdf autoconf" sur google me donne http://www.unidata.ucar.edu/support/help/MailArchives/netcdf(...) en premier lien...
    Attached is an autoconf script for use with netCDF. This script is for
    people who write and distribute their own software packages that will be
    made by the users with './configure' AND that require netCDF to be
    installed on the user's platform. (In other words, this script is for
    software developers, not end users.) The script checks in various places
    I've found the netCDF library to be lurking in over the years
    • [^] # Re: google ?

      Posté par  (site web personnel) . Évalué à 1.

      Ok, merci, je regarde ce script et ça devrait apporter quelque solution à mon problème.

      M'enfin, il reste que mes recherches Google étaient toutes trop particulières avec des mots clefs comme netcdf-3, ...

      Sinon, je me demande si les autotools ne pourrait pas gérer cela tous seuls sans avoir à écrire des scripts m4 particuliers pour chaque bibliothèque qu'on souhaite utiliser et qui pourrait être dans des répertoires différents de /usr/include et autre.
      • [^] # Re: google ?

        Posté par  . Évalué à 0.

        Sinon, je me demande si les autotools ne pourrait pas gérer cela tous seuls sans avoir à écrire des scripts m4 particuliers pour chaque bibliothèque qu'on souhaite utiliser et qui pourrait être dans des répertoires différents de /usr/include et autre.

        Bah non, autoconf ne peut pas deviner de lui-même dans quels dossiers telle bibliothèque peut être placée, ni les quatre milliards de combinaisons possibles de flags pour le compilateur suivant les options et versions de ta bibliothèque...

        Il faut créer un petit bout de script pour lui permettre de le faire, et c'est ce qui est dans le lien que je t'ai donné: le fichier m4 fourni permet à autoconf de gérer proprement la bibliothèque netcdf. Autoconf ne fait pas de la divination; il utilise simplement les scripts dont il dispose pour savoir comment gérer tous ce qu'on lui demande.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.