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

eol*_*old 19 c++ unix linux boost pkg-config

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

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

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

ami*_*reh 13

您正在寻找的内容似乎有点复杂,并且是一个长期请求的功能,如Boost的trac中这篇3年前的帖子https://svn.boost.org/trac/boost/ticket/1094所示.阅读它显示该功能被反复推迟并且从未实现(从1.4.3开始).无法生成pkg-config可用的.pc文件的原因与boost在命名库版本/构建变体时的不一致性有关.

FWIW,"自动化"您的构建过程的替代方法是使用autotools(autoconf/automake).有一个链接可能对你有用(我不能发帖,因为SO认为我是垃圾邮件发送者而不是新手!),只是谷歌"tsuna boost m4 github",它应该带你到那里:)


nma*_*nte 8

面临类似的问题与提升.写了简单的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}
Run Code Online (Sandbox Code Playgroud)

  • 哇,然后人们开始问自己为什么链接变得如此缓慢。这真的应该分成多个 pkg-config 文件。 (2认同)