• cmake配置opencv与boost库


    Cmake配置外部依赖库(以Opencv和Boost为例)

    Cmake对于外部依赖库,需要知道外部库的头文件路径,库文件路径以及库的名字。比如,对于要使用的Boost库,需要知道头文件的位置,库目录的位置以及库依赖。
    具体使用如下:

    include_directories(xxx/include/) # 头文件路径
    link_directories(xxx/lib/) # 库文件路径
    target_link_libraries (foo xx.lib xx.so) # 库的名字
    
    • 1
    • 2
    • 3

    为了使用调用外部库,可以手动指令上述代码中的路径和名称,Cmake提供了find_package程序,用于自动确定上述路径,从而减轻代码移植的复杂度。
    程序的参数如下。

    find_package(Boost
      [version] [EXACT]      # 可选项,最小版本或者确切所需版本
      [REQUIRED]             # 可选项,如果找不到所需库,报错
      [COMPONENTS ...] # 所需的库名称,比如说. "date_time" 代表 "libboost_date_time"
      ) 
    ————————————————
                                版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    原文链接:https://blog.csdn.net/jinzhu1911/article/details/104940277
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    通过上述程序运行,可以自动确定以下变量。

    Boost_FOUND            - 如果找到了所需的库就设为true
    Boost_INCLUDE_DIRS     - Boost头文件搜索路径
    Boost_LIBRARY_DIRS     - Boost库的链接路径
    Boost_LIBRARIES        - Boost库名,用于链接到目标程序
    Boost_VERSION          - 从boost/version.hpp文件获取的版本号
    Boost_LIB_VERSION      - 某个库的版本
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    上述代码中,Boost_INCLUDE_DIRS就是头文件所在目录,Boost_LIBRARY_DIRS是库文件所在目录,Boost_LIBRARIESBOOST所有的库的列表。后续的cmake设置就可以根据此进行设置,如

    include_directories(${Boost_INCLUDE_DIRS}) # 头文件路径
    link_directories(${Boost_LIBRARY_DIRS}) # 库文件路径
    target_link_libraries (foo ${Boost_LIBRARIES}) # 库的名字
    
    • 1
    • 2
    • 3

    对于opencv也是类似,利用find_package(OpenCV REQUIRED)确定以下变量。

    OpenCV_VERSION
    OpenCV_LIBS
    OpenCV_INCLUDE_DIRS
    
    • 1
    • 2
    • 3

    参考资料

    CMake中引用Boost库

  • 相关阅读:
    20220810
    我只认两种产业互联网形态
    VSCode snippets
    游戏开发中的“御用中介“
    【实习之velocity】
    ACM(数论)总结1
    数据库概论 - MySQL的简单介绍
    小程序简单版音乐播放器
    【算法|双指针系列No.6】leetcode LCR 179. 查找总价格为目标值的两个商品
    计算机毕业设计Java校园食堂订餐系统(源码+系统+mysql数据库+Lw文档)
  • 原文地址:https://blog.csdn.net/jiaochong11/article/details/139199711