cmake时提示错误Could NOT find Boost: missing: python-py27 ,boost依赖库报错

问题描述

编译某个库时遇到boost依赖出现如下报错,已知boost已经安装,从错误提示上来看是boost python版本不对,导致找不到python-py27库。

-- Using cmake version 3.16.3
-- Found PythonInterp: /usr/bin/python (found version "2.7.18") 
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython2.7.so (found version "2.7.18") 
-- Could NOT find Boost: missing: python-py27 (found /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0"))
CMake Error at CMakeLists.txt:167 (message):
  Could not find boost libraries!

-- Configuring incomplete, errors occurred!

1.调试问题
在项目CMakeList.txt中找到类似如下语句:

find_package(Boost COMPONENTS iostreams python-py${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR} thread filesystem system thread date_time)

find_package该语句前面加上:

set(Boost_DEBUG ON)

2.重新编译

-- Found Boost 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0
--   Requested configuration: QUIET COMPONENTS iostreams;python-py27;thread;filesystem;system;thread;date_time
-- BoostConfig: find_package(boost_headers 1.71.0 EXACT CONFIG  QUIET HINTS /usr/lib/x86_64-linux-gnu/cmake)
-- Found boost_headers 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0
-- BoostConfig: find_package(boost_iostreams 1.71.0 EXACT CONFIG  QUIET HINTS /usr/lib/x86_64-linux-gnu/cmake)
-- Found boost_iostreams 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_iostreams-1.71.0
-- Boost toolset is gcc9 (GNU 9.4.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_iostreams-1.71.0/libboost_iostreams-variant*.cmake
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_iostreams-1.71.0/libboost_iostreams-variant-shared.cmake
--   [x] libboost_iostreams.so.1.71.0
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_iostreams-1.71.0/libboost_iostreams-variant-static.cmake
--   [ ] libboost_iostreams.a
-- Adding boost_iostreams dependencies: headers
-- BoostConfig: find_package(boost_python-py27 1.71.0 EXACT CONFIG  QUIET HINTS /usr/lib/x86_64-linux-gnu/cmake)
-- BoostConfig: find_package(boost_thread 1.71.0 EXACT CONFIG  QUIET HINTS /usr/lib/x86_64-linux-gnu/cmake)
-- Found boost_thread 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0
-- Boost toolset is gcc9 (GNU 9.4.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0/libboost_thread-variant*.cmake
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0/libboost_thread-variant-shared.cmake
--   [x] libboost_thread.so.1.71.0
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0/libboost_thread-variant-static.cmake
--   [ ] libboost_thread.a
-- Adding boost_thread dependencies: atomic;headers
-- Found boost_atomic 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0
-- Boost toolset is gcc9 (GNU 9.4.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0/libboost_atomic-variant*.cmake
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0/libboost_atomic-variant-shared.cmake
--   [x] libboost_atomic.so.1.71.0
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0/libboost_atomic-variant-static.cmake
--   [ ] libboost_atomic.a
-- Adding boost_atomic dependencies: headers
-- BoostConfig: find_package(boost_filesystem 1.71.0 EXACT CONFIG  QUIET HINTS /usr/lib/x86_64-linux-gnu/cmake)
-- Found boost_filesystem 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0
-- Boost toolset is gcc9 (GNU 9.4.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant*.cmake
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake
--   [x] libboost_filesystem.so.1.71.0
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake
--   [ ] libboost_filesystem.a
-- Adding boost_filesystem dependencies: headers
-- BoostConfig: find_package(boost_system 1.71.0 EXACT CONFIG  QUIET HINTS /usr/lib/x86_64-linux-gnu/cmake)
-- Found boost_system 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_system-1.71.0
-- Boost toolset is gcc9 (GNU 9.4.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_system-1.71.0/libboost_system-variant*.cmake
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_system-1.71.0/libboost_system-variant-shared.cmake
--   [x] libboost_system.so.1.71.0
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_system-1.71.0/libboost_system-variant-static.cmake
--   [ ] libboost_system.a
-- Adding boost_system dependencies: headers
-- BoostConfig: find_package(boost_thread 1.71.0 EXACT CONFIG  QUIET HINTS /usr/lib/x86_64-linux-gnu/cmake)
-- BoostConfig: find_package(boost_date_time 1.71.0 EXACT CONFIG  QUIET HINTS /usr/lib/x86_64-linux-gnu/cmake)
-- Found boost_date_time 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0
-- Boost toolset is gcc9 (GNU 9.4.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0/libboost_date_time-variant*.cmake
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0/libboost_date_time-variant-shared.cmake
--   [x] libboost_date_time.so.1.71.0
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0/libboost_date_time-variant-static.cmake
--   [ ] libboost_date_time.a
-- Adding boost_date_time dependencies: headers
-- Could NOT find Boost: missing: python-py27 (found /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0"))
CMake Error at CMakeLists.txt:164 (message):
  Could not find boost libraries!


-- Configuring incomplete, errors occurred!

重新编译后可以发现是在/usr/lib/x86_64-linux-gnu/路径下找不到与关键字libboost-python27相关的动态链接库.so和静态链接库.a文件。
查找一下发现只有libboost_python38相关的库。

xuuyann@xuuyann:/usr/lib/x86_64-linux-gnu$ sudo find /usr -name "libboost_python*"
/usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0
/usr/lib/x86_64-linux-gnu/libboost_python38.a
/usr/lib/x86_64-linux-gnu/libboost_python38.so
/usr/lib/x86_64-linux-gnu/cmake/boost_python-1.71.0/libboost_python-variant-static-py3.8.cmake
/usr/lib/x86_64-linux-gnu/cmake/boost_python-1.71.0/libboost_python-variant-shared-py3.8.cmake

问题原因在于,我默认安装sudo apt-get install -y --no-install-recommends libboost-all-dev libboost-python-dev库里导致只有python38的版本。

解决方法

1.python2版本的boost-python安装
linux下安装boost python详解

2.修改项目CMakeList.txt文件,将boost路径修改为本地安装路径,按照实际情况在最前面加上如下语句:

set(boost_DIR /usr/local/lib/cmake/Boost-1.71.0/)
set(BOOST_INCLUDE_DIRS /usr/local/include/boost/)
set(BOOST_INCLUDEDIR /usr/local/include/boost/)
set(BOOST_PYTHON_DIR /usr/local/lib/cmake/boost_python-1.71.0/)

3.将项目CMakeList.txt文件中的语句

find_package(Boost COMPONENTS iostreams python-py${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR} thread filesystem system thread date_time)

修改为

find_package(Boost COMPONENTS iostreams python thread filesystem system thread date_time)

4.重新编译,成功!

-- Using cmake version 3.16.3
-- Found Boost 1.71.0 at /usr/local/lib/cmake/Boost-1.71.0
--   Requested configuration: QUIET COMPONENTS iostreams;python;thread;filesystem;system;thread;date_time
-- BoostConfig: find_package(boost_headers 1.71.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_headers 1.71.0 at /usr/local/lib/cmake/boost_headers-1.71.0
-- BoostConfig: find_package(boost_iostreams 1.71.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_iostreams 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_iostreams-1.71.0
-- Boost toolset is gcc9 (GNU 9.4.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_iostreams-1.71.0/libboost_iostreams-variant*.cmake
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_iostreams-1.71.0/libboost_iostreams-variant-shared.cmake
--   [x] libboost_iostreams.so.1.71.0
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_iostreams-1.71.0/libboost_iostreams-variant-static.cmake
--   [ ] libboost_iostreams.a
-- Adding boost_iostreams dependencies: headers
-- BoostConfig: find_package(boost_python 1.71.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_python 1.71.0 at /usr/local/lib/cmake/boost_python-1.71.0
-- Boost toolset is gcc9 (GNU 9.4.0)
-- Scanning /usr/local/lib/cmake/boost_python-1.71.0/libboost_python-variant*.cmake
--   Including /usr/local/lib/cmake/boost_python-1.71.0/libboost_python-variant-shared-py2.7.cmake
--   [x] libboost_python27.so.1.71.0
--   Including /usr/local/lib/cmake/boost_python-1.71.0/libboost_python-variant-static-py2.7.cmake
--   [ ] libboost_python27.a
-- Adding boost_python dependencies: headers
-- BoostConfig: find_package(boost_thread 1.71.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_thread 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0
-- Boost toolset is gcc9 (GNU 9.4.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0/libboost_thread-variant*.cmake
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0/libboost_thread-variant-shared.cmake
--   [x] libboost_thread.so.1.71.0
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0/libboost_thread-variant-static.cmake
--   [ ] libboost_thread.a
-- Adding boost_thread dependencies: atomic;headers
-- Found boost_atomic 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0
-- Boost toolset is gcc9 (GNU 9.4.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0/libboost_atomic-variant*.cmake
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0/libboost_atomic-variant-shared.cmake
--   [x] libboost_atomic.so.1.71.0
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0/libboost_atomic-variant-static.cmake
--   [ ] libboost_atomic.a
-- Adding boost_atomic dependencies: headers
-- BoostConfig: find_package(boost_filesystem 1.71.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_filesystem 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0
-- Boost toolset is gcc9 (GNU 9.4.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant*.cmake
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake
--   [x] libboost_filesystem.so.1.71.0
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake
--   [ ] libboost_filesystem.a
-- Adding boost_filesystem dependencies: headers
-- BoostConfig: find_package(boost_system 1.71.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_system 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_system-1.71.0
-- Boost toolset is gcc9 (GNU 9.4.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_system-1.71.0/libboost_system-variant*.cmake
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_system-1.71.0/libboost_system-variant-shared.cmake
--   [x] libboost_system.so.1.71.0
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_system-1.71.0/libboost_system-variant-static.cmake
--   [ ] libboost_system.a
-- Adding boost_system dependencies: headers
-- BoostConfig: find_package(boost_thread 1.71.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- BoostConfig: find_package(boost_date_time 1.71.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_date_time 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0
-- Boost toolset is gcc9 (GNU 9.4.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0/libboost_date_time-variant*.cmake
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0/libboost_date_time-variant-shared.cmake
--   [x] libboost_date_time.so.1.71.0
--   Including /usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0/libboost_date_time-variant-static.cmake
--   [ ] libboost_date_time.a
-- Adding boost_date_time dependencies: headers
-- found boost version: 1.71.0 at /usr/local/include
-- Configuring done
-- Generating done
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuuyann

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值