2010-12-05 15 views
1

J'essaie de faire en sorte que mon projet autotools soit en lien C++ avec la bibliothèque, qui provient de la bibliothèque C (libsomelib.so), mais qui a aussi des liaisons avec C++ (libsomelib ++ .so). Je tente d'utiliser PKG_CHECK_MODULES pour vérifier si ce paquet est installé et utiliser autotools pour le lier. Cependant, les deux libs viennent dans un paquet (C++ version nécessite drapeau de configuration), et qu'un seul fichier de .pc, dans lequel indépendamment des paramètres de configuration il n'y a qu'une lignePKG_CHECK_MODULES pour somelib ++

Libs: -L${libdir} -lsomelib 

sans mention de ++ version. Il n'y a pas non plus de fichier ++. Pc séparé que j'ai remarqué dans d'autres programmes. Par conséquent, la liaison automatique contre la version ++ est impossible. J'ai pensé à ajouter manuellement -lsomelib ++ aux drapeaux de liaison, mais c'est plutôt moche (et ça ne marchera pas si quelqu'un l'a compilé sans le drapeau -with-cxx). Je pourrais aussi tester son existence par AC_SEARCH_LIBS, mais comme c'est une bibliothèque C++, ce n'est pas si simple.

Est-ce qu'il manque une erreur de fichier .PC de distributeur de paquets ou est-ce une idée plus profonde, et je ne sais pas comment l'utiliser?

Si quelqu'un est vraiment prétentieux, je dirai que le paquet en question est ossp-uuid.

Répondre

1

Oui, le ++. Pc manquant indique généralement une omission de la part du conditionneur. BTW: Si de simples UUID (DCE) sont suffisants, vous pouvez utiliser libuuid de e2fsprogs/util-linux (au cas où vous exécuteriez ce système d'exploitation).