2010-10-19 14 views
17

He compilado e instalado exitosamente la última versión de la biblioteca Boost en mi máquina Linux. Ahora, me gustaría poder usar pkg-config para facilitar el proceso de proporcionar pares de enlaces con GCC.Cómo usar la biblioteca C++ Boost con pkg-config?

Como soy demasiado flojo para codificar a mano mi propio archivo .pc, ¿hay un script/herramienta que genere automáticamente el archivo .pc necesario o de alguna otra manera actualice pkg-config con indicadores de impulso?

(Si alguien ya tiene ese archivo .pc, una parte sería bienvenido también.)

Respuesta

8

Lo que estás buscando parece ser un poco complicado, y una característica largamente solicitada, tal como se indica en esta publicación de 3 años https://svn.boost.org/trac/boost/ticket/1094 en Boost trac. Al leerlo, se muestra que la función se pospuso repetidamente y nunca se implementó (a partir de 1.4.3). La causa de la incapacidad de generar un archivo .pc utilizable por pkg-config tiene que ver con la incoherencia de boost al nombrar sus versiones de biblioteca/variantes de compilación.

FWIW, una alternativa para "automatizar" su proceso de construcción es usar autotools (autoconf/automake). Hay un enlace que podría ser útil para usted (¡que no puedo publicar porque SO cree que soy un spammer en lugar de un recién llegado!), Simplemente google "tsuna boost m4 github" y debería llevarlo allí :)

5

Estaba enfrentando un problema similar con el impulso. Escribió una secuencia de comandos python simple para generar un archivo .pc. Me salvó el dolor de tener que escribir todos los comandos del enlazador. Lo publiqué en https://github.com/nmante/pkg-config-generator.

Básicamente, le das a la secuencia de comandos un directorio donde los archivos de la biblioteca son (.so, .a, .dylib) y generará los comandos del vinculador (por ejemplo, -lboost_graph). Siéntase libre de ajustar y bifurcar a sus necesidades.

Aquí hay un archivo boost.pc de muestra que generé para mi máquina (Mac OS X). Puede modificarlo manualmente, o puede usar mi github program para generarlo en su máquina.

# 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} 
Cuestiones relacionadas