Как использовать библиотеку C++ Boost с pkg-config?

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

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

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


person eold    schedule 19.10.2010    source источник


Ответы (2)


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

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

person amireh    schedule 26.10.2010
comment
Почти 12. Нет прогресса. - person Gerardo Zinno; 04.09.2019

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

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

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

# 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}
person nmante    schedule 25.06.2016
comment
Вау, а потом люди начинают задаваться вопросом, почему связывание стало таким медленным. Это действительно должно быть разделено на несколько файлов pkg-config. - person Lothar; 12.06.2018
comment
Куда вы помещаете файл .pc? Это должно быть сделано для каждой библиотеки, чтобы ее можно было использовать. например pkg-config --libs boost_test boost_graph. - person alfC; 13.06.2020