ROS交流群
ROS Group
产品服务
Product Service
开源代码库
Github
官网
Official website
技术交流
Technological exchanges
激光雷达
LIDAR
ROS教程
ROS Tourials
深度学习
Deep Learning
机器视觉
Computer Vision

在Windows上cmake无法正确找到boost库模块的问题



  • 在我们安装完boost库之后。如果有其他程序通过cmake引用boost库的时候。很有可能出现boost库已经找到,但是对应的模块无法载入。这个问题在于boost的编译版本有很多,比如32位,64位,Debug版或Release版。不同的编译版本生成的链接库文件的名字是不一样的。cmake程序要根据系统的情况和编译配置去猜测文件名。如果猜对了就可以找到,但是也有猜错的情况。这时候就需要进行配置才能找到对应的库文件。

    CMake Error at C:/Program Files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:1106     (message):
    Unable to find the requested Boost libraries.
    
    Boost version: 1.54.0
    
    Boost include path: D:/boost_1_54_0
    
    The following Boost libraries could not be found:
    
          boost_thread
          boost_system
          boost_log
          boost_log_setup
          boost_program_options
    
    No Boost libraries were found.  You may need to set BOOST_LIBRARYDIR to the
    directory containing Boost libraries or BOOST_ROOT to the location of Boost.
    Call Stack (most recent call first):
    CMakeLists.txt:20 (find_package)
    

    在cmake的安装路径里找到下面的文件
    CMake\share\cmake-3.13\Modules\FindBoost.cmake

    这个文件有在开头有很多注释,里面有很多参数。通过配置这些参数可以帮助cmake找到对应的库文件。
    下面是比较关键的几个参数

    set(Boost_DEBUG ON) #是否开启Boost Debug模式,ON位开启,OFF关闭。开启之后会输出很多调试信息,方便寻找错误
    set(Boost_ARCHITECTURE "-x32") # CPU架构,对应库文件文件名里的x32或者x64
    set(Boost_THREADAPI "win32") # 线程类型,对应thread模块文件名里面的pthread或者win32
    

    只要其猜测的文件名和实际文件名能够对应上库的引用就没有问题。你可以把这几个参数设置在自己项目的CMakeLists.txt文件中


Log in to reply