Évidemment, les choses dans le monde C sont un peu différentes parce que vous n'avez pas besoin de la source à l'exécution. La manière générale de faire les choses sur GNU/Linux (et beaucoup d'autres systèmes * ix) est que certaines étapes de la configuration sont effectuées en utilisant un script ou un programme de configuration. Le plus commun d'entre eux est le fameux script configure
, généré par GNU autoconf
. Les autotools génèrent beaucoup de fichiers cache et copient beaucoup de scripts auxiliaires dans votre arborescence source, alors n'oubliez pas de mettre en place .gitignore
ou vous deviendrez fou.
Un grand nombre de bibliothèques installent des fichiers de contrôle pour pkg-config
dans $prefix/lib/pkgconfig
ou $prefix/share/pkgconfig
. Ceux-ci sont lus par l'outil pkg-config
pour vérifier l'existence des bibliothèques et obtenir les indicateurs correcteurs du compilateur et de l'éditeur de liens pour cette bibliothèque. Ils sont en texte brut, alors jetez un oeil à /usr/lib/pkgconfig
pour avoir une idée de ce à quoi ils ressemblent.
Dans autoconf
, un fichier configure.ac
est compilé dans configure
en appelant le processeur de macros m4
(à travers une enveloppe appelée autoconf
). Pour vérifier une bibliothèque qui fonctionne avec pkg-config
, les choses sont vraiment faciles. Vous ajoutez quelque chose comme ce qui suit à configure.ac
# Checks for libraries.
PKG_CHECK_MODULES([GLib], [glib-2.0])
Cela vérifiera que pkg-config
est installé et ensuite l'utiliser pour vérifier le paquet glib-2.0
, l'impression du message Checking for GLib...
le long du chemin. Il va également définir les variables de shell GLib_CFLAGS
et GLib_LIBS
, et faire en sorte qu'elles soient remplacées dans tous les fichiers créés par AC_CONFIG_FILES
(tels que votre Makefile
, de Makefile.in
).S'il ne trouve pas glib, configure
échouera avec une erreur. Jetez un oeil à /usr/share/aclocal/pkg.m4
pour trouver la définition de PKG_CHECK_MODULES
, qui prend en charge quelques autres options. La documentation est dans la page de manuel pkg-config(1)
.
Si votre bibliothèque dépendante ne prend pas en charge pkg-config
, le fournisseur de bibliothèque fournit parfois une macro autoconf
. Les anciennes versions de SDL, par exemple, ont fourni AM_PATH_SDL
, mais les nouvelles versions utilisent simplement pkg-config
.
S'il n'y a pas de support du fournisseur, il existe parfois un support tiers au autoconf archive. L'archive autoconf est disponible sous forme de paquet dans Debian GNU/Linux et MacPorts (et probablement beaucoup d'autres systèmes), ce qui signifie que toutes les définitions nécessaires peuvent être utilisées sans copier les fichiers .m4
à la main.
Si rien de ce qui précède n'est vrai, alors vérifiez un en-tête en utilisant quelque chose comme AC_CHECK_HEADER
et vérifiez la bibliothèque en utilisant quelque chose comme AC_CHECK_LIB
.
Quelle plateforme? Parce que l'endroit standard de facto pour cela sur Linux est dans un fichier 'configure' (ou n'importe quelle partie du mess d'autoconf le projette). – detly
Si vous utilisez autotools, les dépendances sont vérifiées dans 'configure.ac', généralement via' pkg-config' en invoquant la macro 'PKG_CHECK_MODULES'. Cela vit dans votre VC. Le fichier 'configure', généré à partir de' configure.ac', est exécuté par l'utilisateur et ne le fait pas. –
@Jack Kelly: Vous devriez écrire cela comme une réponse plutôt que comme un commentaire. – caf