Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake在Debian上找不到boost_program_选项_C++_Boost_Cmake_Debian - Fatal编程技术网

C++ CMake在Debian上找不到boost_program_选项

C++ CMake在Debian上找不到boost_program_选项,c++,boost,cmake,debian,C++,Boost,Cmake,Debian,我需要Boost和一些组件库,包括program_选项,但是由于库版本命名,CMake的FIND_PACKAGE命令在Debian上失败。我如何强制它以尽可能干净的方式查找程序\u选项库 # CMakeLists.txt SET( Boost_USE_STATIC_LIBS FALSE ) SET( Boost_USE_MULTITHREADED FALSE ) FIND_PACKAGE( Boost COMPONENTS program_options system thread REQUIR

我需要Boost和一些组件库,包括program_选项,但是由于库版本命名,CMake的
FIND_PACKAGE
命令在Debian上失败。我如何强制它以尽可能干净的方式查找
程序\u选项

# CMakeLists.txt
SET( Boost_USE_STATIC_LIBS FALSE )
SET( Boost_USE_MULTITHREADED FALSE )
FIND_PACKAGE( Boost COMPONENTS program_options system thread REQUIRED)
其结果如下:

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库:

$ 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\u options
是唯一一个没有未版本化的名称的库(其他库提供链接(由上面的
@
表示),例如
libboost\u system.so->libboost\u system.so.1.54.0
)。据我所知,Debian 7.2没有提供创建这种链接的软件包,因此导致找不到
program\u options
。我能做什么不包括手动创建链接(我不能期望其他使用我的包的人能够做到这一点)


无论如何,安装libboost程序选项dev会产生链接。

对于最近的
boost
-版本(当前为1.72) 或者,当需要更新的版本(例如,当前的
1.72
)但未作为deb找到时,您可以使用解压缩的boost文件夹中的命令(例如,
../boost\u 1\u 72\u 0/
)从中构建/安装
程序选项
包:

$sudo./bootstrap.sh--with libraries=program\u选项
$sudo./b2安装
可能的话,您可以遵循完整的for
boost
,并在之前卸载deb(
sudo-apt-get-remove-libboost

$ 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