• Linux下使用CMake进行编译的时候寻找Boost库


    find_package

    通过调用find_package可以找到头文件和所需要的库文件或者是一个CMake打包配置文件,

    find_package(Boost
      [version] [EXACT]      # 可选项,最小版本或者确切所需版本
      [REQUIRED]             # 可选项,如果找不到所需库,报错
      [COMPONENTS <libs>...] # 所需的库名称,比如说. "date_time" 代表 "libboost_date_time"
      )     
    

    运行完后可以得到很多变量,下面列了一些主要的

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

    可以在搜索package之前,通过设置一些变量来帮助boost库的查找

    BOOST_ROOT             - 首选的Boost安装路径
    BOOST_INCLUDEDIR       - 首选的头文件搜索路径 e.g. <prefix>/include
    BOOST_LIBRARYDIR       - 首选的库文件搜索路径 e.g. <prefix>/lib
    Boost_NO_SYSTEM_PATHS  - 默认是OFF. 如果开启了,则不会搜索用户指定路径之外的路径
    

    示例程序

    假如目标程序foo需要链接Boost库regex和system,编写如下的CMakeLists文件,

    # CMakeLists.txt
    project(tutorial-0)
    cmake_minimum_required(VERSION 3.5)
    set(CMAKE_CXX_STANDARD 14)
    
    set(BOOST_ROOT /usr/local/install/boost_1_61_0)
    
    find_package(Boost COMPONENTS regex system REQUIRED)
    
    if(Boost_FOUND)
        include_directories(${Boost_INCLUDE_DIRS})
        
        MESSAGE( STATUS "Boost_INCLUDE_DIRS = ${Boost_INCLUDE_DIRS}.")
        MESSAGE( STATUS "Boost_LIBRARIES = ${Boost_LIBRARIES}.")
        MESSAGE( STATUS "Boost_LIB_VERSION = ${Boost_LIB_VERSION}.")
    
        add_executable(foo foo.cpp)
        target_link_libraries (foo ${Boost_LIBRARIES})
    endif()
    
    • 通过设置BOOST_ROOT来设置首选的搜索路径
    • 通过MESSAGE函数把查找的结果都打印了出来
    -- Boost_INCLUDE_DIRS = /usr/local/install/boost_1_61_0/include.
    -- Boost_LIBRARIES = /usr/local/install/boost_1_61_0/lib/libboost_regex.so;/usr/local/install/boost_1_61_0/lib/libboost_system.so.
    -- Boost_LIB_VERSION = 1_61.
    
    • 编译过程需要用到的头文件搜索路径保存在变量Boost_INCLUDE_DIRS中,所需要link的库文件路径保存在变量Boost_LIBRARIES

    参考链接

    FindBoost

  • 相关阅读:
    将16进制的颜色转为rgb颜色
    css3选择
    css写复选框
    关于瀑布流
    关于CSS3属性transition的触发
    单行文本两端对齐
    jQuery插件——下拉选择框
    CSS3帧动画
    Vuejs自定义全局组件--loading
    Sublime text开发Quick-Cocos2d-x-3.x环境搭建(Windows)
  • 原文地址:https://www.cnblogs.com/lidabo/p/13801993.html
Copyright © 2020-2023  润新知