2010-02-05 18 views
7

Comment puis-je savoir où installer mon fichier .pc? Ces fichiers sont placés à différents endroits sur différents systèmes d'exploitation. L'objectif est de pouvoir utiliser quelque chose comme $(INSTALL) mylib.pc $$(pkg-config --pcdir) dans la cible d'installation. Je pensais pkg-config serait en mesure de me dire en quelque sorte, mais je ne trouve rien.pkg-config: façon plate-neutre pour savoir où installer mon fichier .pc?

Je suis à la recherche d'une solution « autonome » utilisable dans le Makefile ordinaire (ne doit pas nécessiter le soutien de autotools ou similaire).

+2

Si vous installez un fichier * .pc, il doit être installé dans $ (DESTDIR) $ (libdir)/pkgconfig. L'utilisateur de votre package a le privilège et la responsabilité de la mise en DESTDIR et libdir de façon appropriée, et si votre package ignore ce que l'utilisateur spécifie alors votre package est cassé. –

Répondre

5

MISE À JOUR: De toute évidence, il est maintenant une façon de le faire:

pkg-config --variable pc_path pkg-config 

On trouve dans cette bug report (voir le commentaire n ° 4). La page de manuel actuelle semble documenter ceci.

réponse originale:

solution Horrible hackish (en supposant bourne shell):

pkg-config --debug 2>&1 |grep Scanning | sed -e 's/Scanning directory //' -e "s/'//g" 

Cela peut vous donner plus d'un endroit.

modifier par @Just quelqu'un

version plus courte

pkg-config --debug 2>&1 | sed -ne '/Scanning directory /s///p' 

et d'arrêter après le premier répertoire:

pkg-config --debug 2>&1 | sed -ne '/Scanning directory /{s///p;q;}' 
+2

Harry Potter se montre!;) –

+0

@just quelqu'un: Félicitations! Très belle (mais hacky, mais aussi ma solution: -P) approche pour utiliser les messages de débogage. :-P –

+0

- Utilisation d'autoconf pour le sondage de caractéristiques portable - vérifier. - Utilisation d'automake pour le bâtiment portable - vérifier. - Utilisation de libtool pour extraire les particularités de la gestion de la bibliothèque de partage - vérifier. - Utilisation de pkg-config pour découvrir les indicateurs du compilateur de manière portable - vérifiez. - ... - S'appuyant sur un détail d'implémentation non documenté de pkg-config qui peut ou ne peut pas être là, vaincre toute la lutte pour la portabilité - vérifier. -1. Toujours à la recherche d'un moyen portable et non-fou pour ce faire – fstd

1

Malheureusement, pour une installation disponible pkg-config (pour la version 0.23), il n'y a pas moyen d'extraire la valeur par défaut "chemin pc", proche de la course strings sur le binaire (par exemple, strings /usr/bin/pkg-config | grep '/usr/.*/pkgconfig').

Si vous êtes en mesure d'installer une construction personnalisée, il suffit de la patcher pour écrire la valeur de PKG_CONFIG_PC_PATH lorsqu'elle est exécutée avec l'option appropriée.

Une autre option, qui ne vous aidera probablement pas (mais que je mentionnerai de toute façon pour l'exhaustivité), est de définir la variable d'environnement PKG_CONFIG_PATH lors de l'appel pkg-config.

+0

"impossible": c'est aussi ma conclusion. pas une réponse avec laquelle je serais trop heureux, mais à moins que Harry Potter ne se montre, je l'accepterai. –

3

il devrait aller dans $ {} libdir/pkgconfig (à savoir $ {prefix}/lib/pkgconfig)

b asically si vous installez les bibliothèques et ils vont dans puis $ {} libdir votre fichier .pc doit être dans $ {} libdir/pkgconfig et nulle part ailleurs.

+0

ce serait bien si le monde réel était aussi simple, mais pour une raison quelconque, FreeBSD place les fichiers pkgconfig dans $ {prefix}/libdata/pkgconfig. c'est stupide, mais c'est là. –

+0

dans ce cas, regardez ce que des choses comme glib fait – Spudd86

+1

FreeBSD suit certainement le modèle; ils ont mis libdir = $ {prefix}/libdata –