Incluez portablement des en-têtes GLIB dans AutoConf / Automake
-
20-09-2019 - |
Question
J'ai besoin d'inclure le Désinvolte En-têtes pour un projet construit avec un système basé sur AutoConf pour la portabilité.
Comment puis-je importer en toute sécurité les en-têtes glibs de manière portable? Je sais pkg-config, mais ce n'est pas entièrement portable (car certains systèmes ne l'ont pas et je préférerais que vous comptez uniquement sur AutoConF pour la configuration).
La solution
Le glib 2.22 INSTALL
le fichier indique que pkg-config
est une exigence pour installer cette bibliothèque. Je ne suis pas glib (jeu de mots voulu!); L'énoncé de cette exigence est l'une des premières choses en haut du INSTALL
dossier.
D'après le texte entourant, il n'est pas clair si pkg-config
est nécessaire pour compiler Glib lui-même, mais il est clair que les auteurs GLIB 2.22 n'ont pas l'intention que les utilisateurs se compilent avec Glib sans avoir PKG-Config. En particulier, les glibs make install
va installer .pc
fichiers de manière appropriée.
Pour la portabilité de la plate-forme, demandez à l'utilisateur de définir $PKG_CONFIG_PATH
de manière appropriée.
Autres conseils
En utilisant le PKG_CHECK_MODULES
macro, généré par l'autoconf configure
Les scripts peuvent récupérer automatiquement les données PKG-Config. Par exemple, ajoutant cette ligne à votre configure.ac
dossier:
PKG_CHECK_MODULES([DEPS], [glib-2.0 >= 2.24.1])
provoquera le résultat configure
Script pour s'assurer que la version installée de GLIB-2.0 est supérieure ou égale à la version 2.24.1 ainsi qu'à ajouter des variables DEPS_CFLAGS
et DEPS_LIBS
la sortie de pkg-config --cflags glib-2.0
et pkg-config --libs glib-2.0
, respectivement. Vous utilisez alors le $(DEPS_CFLAGS)
et $(DEPS_LIBS)
variables dans le _CFLAGS
et _LDADD
Primaires:
bin_PROGRAMS = hello
hello_CFLAGS = $(DEPS_CFLAGS)
hello_SOURCES = hello.c
hello_LDADD = $(DEPS_LIBS)