2010-10-19 8 views
17

J'ai compilé et installé avec succès la dernière version de la bibliothèque Boost sur ma machine Linux. Maintenant, j'aimerais pouvoir utiliser pkg-config pour faciliter le processus de fourniture de paremètres de liaison avec GCC. Étant donné que je suis trop paresseux pour coder manuellement mon propre fichier .pc, y a-t-il un script/outil qui générerait automatiquement le fichier .pc nécessaire ou d'une autre manière mettreait pkg-config avec les flags de boost?Comment utiliser la bibliothèque C++ Boost avec pkg-config?

(Si quelqu'un a déjà ce fichier .pc, une part serait les bienvenus.)

Répondre

8

Qu'est-ce que vous cherchez semble être un peu compliqué, et une fonctionnalité à long demandé, comme il est indiqué dans ce poste de 3 ans https://svn.boost.org/trac/boost/ticket/1094 sur Booster trac. En le parcourant, on constate que la fonctionnalité a été reportée à plusieurs reprises et jamais mise en œuvre (à partir du 1.4.3). La cause de l'incapacité de générer un fichier .pc utilisable par pkg-config se trouve dans l'incohérence de boost dans le nommage de leurs versions de bibliothèques/variantes de construction. FWIW, une alternative pour "automatiser" votre processus de construction est d'utiliser autotools (autoconf/automake). Il y a un lien qui pourrait vous être utile (que je ne peux pas poster parce que SO pense que je suis un spammeur au lieu d'un nouveau venu!), Juste google "tsuna boost m4 github" et ça devrait vous y mener :)

5

A fait face à un problème similaire avec boost. A écrit un script python simple pour générer un fichier .pc. M'a sauvé la douleur d'avoir écrit toutes les commandes de l'éditeur de liens. Je l'ai posté sur https://github.com/nmante/pkg-config-generator. Essentiellement, vous donnez au script un répertoire où les fichiers de bibliothèque sont (.so, .a, .dylib) et il générera les commandes du lieur (par exemple -lboost_graph). N'hésitez pas à peaufiner et à fourchette à vos besoins.

Voici un exemple de fichier boost.pc que j'ai généré pour ma machine (Mac OS X). Vous pouvez le modifier manuellement, ou vous pouvez utiliser mon github program pour le générer sur votre machine.

# Package Information for pkg-config 

prefix=/usr/local/Cellar/boost/1.60.0_2 
exec_prefix=${prefix} 
libdir=${exec_prefix}/lib 
includedir_old=${prefix}/include/boost 
includedir_new=${prefix}/include 

Name: Boost 
Description: Boost is awesome 
Version: 1.60.0 
Libs: -L${exec_prefix}/lib -lboost_prg_exec_monitor-mt 
-lboost_math_c99f-mt -lboost_unit_test_framework-mt 
-lboost_container-mt -lboost_log_setup -lboost_math_tr1l 
-lboost_graph-mt -lboost_wserialization-mt -lboost_log-mt 
-lboost_math_c99f -lboost_type_erasure -lboost_signals-mt 
-lboost_test_exec_monitor -lboost_filesystem -lboost_thread-mt 
-lboost_math_tr1f-mt -lboost_date_time -lboost_timer 
-lboost_math_tr1f -lboost_test_exec_monitor-mt -lboost_container 
-lboost_math_tr1 -lboost_type_erasure-mt 
-lboost_program_options-mt -lboost_graph -lboost_log_setup-mt 
-lboost_random -lboost_system -lboost_system-mt -lboost_locale-mt 
-lboost_wserialization -lboost_regex -lboost_exception 
-lboost_timer-mt -lboost_signals -lboost_filesystem-mt 
-lboost_math_c99-mt -lboost_math_tr1-mt -lboost_serialization-mt 
-lboost_serialization -lboost_prg_exec_monitor -lboost_exception-mt 
-lboost_coroutine -lboost_math_c99 -lboost_iostreams-mt 
-lboost_random-mt -lboost_program_options -lboost_atomic-mt 
-lboost_date_time-mt -lboost_math_c99l -lboost_math_tr1l-mt 
-lboost_context-mt -lboost_regex-mt -lboost_coroutine-mt 
-lboost_log -lboost_chrono-mt -lboost_wave-mt 
-lboost_iostreams -lboost_chrono -lboost_unit_test_framework 
-lboost_math_c99l-mt 
Cflags: -I${includedir_old} -I${includedir_new} 
Questions connexes