2010-10-19 15 views
17

Ho compilato e installato con successo l'ultima versione della libreria Boost sulla mia macchina Linux. Ora, vorrei poter usare pkg-config per facilitare il processo di fornitura dei parametri di collegamento con GCC.Come usare la libreria C++ Boost con pkg-config?

Dato che sono troppo pigro per codificare a mano il mio file .pc, c'è uno script/strumento che genera automaticamente il file .pc necessario o in qualche altro modo aggiorna pkg-config con i flag di boost?

(Se qualcuno ha già quel file .PC, una quota sarebbe il benvenuto pure.)

risposta

8

Cosa stai cercando sembra essere un po 'complicato, e una funzione da lungo tempo richiesti, come indicato nella questo post di 3 anni https://svn.boost.org/trac/boost/ticket/1094 su Boost's trac. Leggendola mostra che la funzione è stata ripetutamente rimandata e mai implementata (come da 1.4.3). La causa dell'incapacità di generare un file .pc utilizzabile da pkg-config dipende dall'incoerenza di boost nel nominare le versioni di librerie/varianti di build.

FWIW, un'alternativa per "automatizzare" il processo di costruzione è utilizzare gli autotools (autoconf/automake). C'è un link che potrebbe esserti utile (che non posso pubblicare perché SO pensa che io sia uno spammer invece di un nuovo arrivato!), Solo google "tsuna boost m4 github" e dovrebbe portarti lì :)

5

Era di fronte a un problema simile con boost. Ha scritto un semplice script python per generare un file .pc. Mi ha salvato il dolore di aver scritto tutti i comandi del linker. L'ho pubblicato su https://github.com/nmante/pkg-config-generator.

In sostanza, si fornisce allo script una directory in cui i file della libreria sono (file .so, .a, .dylib) e genererà i comandi del linker (ad esempio -lboost_graph). Sentiti libero di modificare e orientare le tue esigenze.

Ecco un file boost.pc di esempio che ho generato per la mia macchina (Mac OS X). Puoi modificarlo manualmente oppure puoi usare il mio github program per generarlo sul tuo computer.

# 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} 
Problemi correlati