如何使用C ++ Boost库与pkg-config?

我成功编译并安装了最新版本的Boost库到我的linux机器上。 现在,我希望能够使用pkg-config来简化与GCC提供链接参数的过程。

由于我懒得手工编写我自己的.pc文件,是否有一个脚本/工具,会自动生成所需的.pc文件或以其他方式更新pkg-config与升压标志?

(如果某人已经拥有该.pc文件,则也欢迎分享。)

你正在寻找的东西似乎有点复杂,并且需要一个长期的功能,正如这个3年前在Boost的trac上发布的https://svn.boost.org/trac/boost/ticket/1094 。 通过读取显示该功能被反复推迟,从未实现(从1.4.3开始)。 无法生成可由pkg-config使用的.pc文件的原因恰恰与boost在命名其库版本/构建变体时的不一致性有关。

FWIW,用于使您的构建过程“自动化”的替代方法是使用autotools(autoconf / automake)。 有一个可能对你有用的链接(我不能发布,因为所以我认为我是一个垃圾邮件发送者,而不是一个新手!),只是谷歌“tsuna助推m4 github”,它应该带你:)

正面临类似的问题与提振。 写了简单的python脚本来生成一个.pc文件。 为我省去了编写所有链接器命令的痛苦。 我已经发布在https://github.com/nmante/pkg-config-generator上 。

从本质上说,你给脚本一个库文件所在的目录(.so,.a,.dylib文件),它将生成链接器命令(例如-lboost_graph)。 随意调整和叉到您的需求。

下面是我为我的机器(Mac OS X)生成的示例boost.pc文件。 你可以手动调整它,或者你可以使用我的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}