首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CMake在Debian上找不到boost_program_options

CMake在Debian上找不到boost_program_options
EN

Stack Overflow用户
提问于 2013-12-10 18:15:56
回答 2查看 10.8K关注 0票数 6

我需要Boost和一些组件库,包括program_options,但是由于库版本命名,CMake的FIND_PACKAGE命令在Debian上失败了。我怎样才能强迫它以尽可能干净的方式找到program_options库?

代码语言:javascript
运行
复制
# CMakeLists.txt
SET( Boost_USE_STATIC_LIBS FALSE )
SET( Boost_USE_MULTITHREADED FALSE )
FIND_PACKAGE( Boost COMPONENTS program_options system thread REQUIRED)

这样做的结果如下:

代码语言:javascript
运行
复制
Unable to find the requested Boost libraries.

Boost version: 1.54.0

Boost include path: /usr/include

The following Boost libraries could not be found:

        boost_program_options

查看我的boost库:

代码语言:javascript
运行
复制
$ ls -F /usr/lib | grep boost
libboost_program_options.so.1.49.0
libboost_program_options.so.1.54.0
libboost_system.a
libboost_system.so@
libboost_system.so.1.54.0
libboost_thread.a
libboost_thread.so@
libboost_thread.so.1.49.0
libboost_thread.so.1.54.0

请注意,program_options是唯一没有不版本化名称的库(其他库提供链接(由上面的@表示),例如libboost_system.so -> libboost_system.so.1.54.0)。据我所知,Debian7.2没有提供创建这样一个链接的包,因此无法找到program_options。我能做什么不包括手动创建链接(我不能期望其他使用我的包的人能够这样做)。

代码语言:javascript
运行
复制
$ cmake -DBoost_DEBUG=ON
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:961 ] Searching for PROGRAM_OPTIONS_LIBRARY_RELEASE: boost_program_options-gcc47-1_54;boost_program_options-gcc47;boost_program_options-1_54;boost_program_options;boost_program_options
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:993 ] Searching for PROGRAM_OPTIONS_LIBRARY_DEBUG: boost_program_options-gcc47-d-1_54;boost_program_options-gcc47-d;boost_program_options-d-1_54;boost_program_options-d;boost_program_options;boost_program_options
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:961 ] Searching for SYSTEM_LIBRARY_RELEASE: boost_system-gcc47-1_54;boost_system-gcc47;boost_system-1_54;boost_system;boost_system
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:993 ] Searching for SYSTEM_LIBRARY_DEBUG: boost_system-gcc47-d-1_54;boost_system-gcc47-d;boost_system-d-1_54;boost_system-d;boost_system;boost_system
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:961 ] Searching for THREAD_LIBRARY_RELEASE: boost_thread-gcc47-1_54;boost_thread-gcc47;boost_thread-1_54;boost_thread;boost_thread
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:993 ] Searching for THREAD_LIBRARY_DEBUG: boost_thread-gcc47-d-1_54;boost_thread-gcc47-d;boost_thread-d-1_54;boost_thread-d;boost_thread;boost_thread
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:1107 ] Boost_FOUND = FALSE
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-10 18:47:50

不过,事实证明,安装libboost-program-options-dev就可以实现这个链接。

票数 19
EN

Stack Overflow用户

发布于 2020-04-09 18:41:08

最近的boost-versions (目前为1.72)

或者,如果需要更新的版本(例如当前的1.72),而这些版本不是deb,那么您可以使用在解压缩的boost文件夹(例如.../boost_1_72_0/)中的命令从boost.org-website构建/安装默认-容易构建-指令包:

代码语言:javascript
运行
复制
$ sudo ./bootstrap.sh --with-libraries=program_options

$ sudo ./b2 install

可能,您可以遵循完整的-installation for boost,并在以前卸载deb (sudo apt-get remove libboost<version>)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20502194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档