2010-10-19 2 views
17

Я успешно скомпилировал и установил последнюю версию библиотеки Boost на мою Linux-машину. Теперь я хотел бы иметь возможность использовать pkg-config, чтобы облегчить процесс предоставления связующих пареметров с помощью GCC.Как использовать C++ Boost library с pkg-config?

Поскольку я слишком ленив для ручного кодирования моего собственного .pc-файла, есть ли скрипт/инструмент, который автоматически генерирует необходимый .pc-файл или каким-то другим образом обновляет pkg-config с флагами boost?

(Если кто-то уже есть этот файл .pc, доля будет приветствоваться, а также.)

ответ

8

Что вы ищете, кажется, немного сложнее, и давно просил особенность, как указано в этот 3-летний пост https://svn.boost.org/trac/boost/ticket/1094 на Boost's trac. Чтение через него показывает, что функция неоднократно откладывалась и никогда не выполнялась (начиная с 1.4.3). Причина неспособности генерировать файл .pc, который может использоваться pkg-config, случается с несогласованностью boost в названии их версий библиотек/вариантов сборки.

FWIW, альтернатива для «автоматизации» вашего строительного процесса - использовать автотела (autoconf/automake). У вас есть ссылка, которая может вам пригодиться (что я не могу публиковать, потому что SO считает, что я спамер, а не новичок!), Просто google «tsuna boost m4 github», и он должен забрать вас туда :)

5

Столкнулся с аналогичной проблемой с усилением. Написал простой скрипт python для создания файла .pc. Спасло меня от того, что я написал все команды компоновщика. Я разместил его на https://github.com/nmante/pkg-config-generator.

По существу, вы даете сценарию каталог, в котором находятся файлы библиотеки (.so, .a, .dylib), и он будет генерировать команды компоновщика (например, -lboost_graph). Не стесняйтесь настраивать и развивать свои потребности.

Вот образец файла boost.pc, который я сгенерировал для своей машины (Mac OS X). Вы можете настроить его вручную, или вы можете использовать мой github program для его создания на вашем компьютере.

# 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} 
Смежные вопросы