需要使用cmake的find_package将boost库添加到项目中,通过cmake --help-module FindBoost 可以查看cmake引入Boost的帮助信息:

可以看到,Boot_LIBRARIES确实是boost相关的库,刚开始编写的CMakeLists.txt文件如下:

cmake_minimum_required(VERSION 2.8.4)
project(boostCmake) set(CMAKE_CXX_STANDARD 11)
set(Boost_DEBUG 1) find_package(Boost)
if(Boost_FOUND)
MESSAGE("Boost_FOUND")
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARIES})
MESSAGE(WARNING "Boost_INCLUDE_DIRS is ${Boost_INCLUDE_DIRS}")
add_executable(boostCmake main.cpp)
MESSAGE(WARNING "Boost_LIBRARIES is ${Boost_LIBRARY_DIRS}")
MESSAGE(WARNING "Boost_LIBRARIES is ${Boost_LIBRARIES}")
target_link_libraries(boostCmake ${Boost_LIBRARIES} ) endif()

可是链接一直不成功,MESSAGE(WARNING "Boost_LIBRARIES is ${Boost_LIBRARIES}") 打印的值始终为空。

这是因为cmake的find_package需要制定具体的library,${Boost_LIBRARIES}才会有值,要不然就会是空,find_package的正确写法是:

find_package(Boost 1.54 REQUIRED COMPONENTS system  thread)

这样可以看到打印的结果,所需要的库都找到了,这样target_link_libraries(boostCmake ${Boost_LIBRARIES}才会真正的链接到具体的so上,不然就会一直报链接错误。

具体工程可以参考:https://github.com/aktiger/boostCmake.git

Cmake find_package 需要指定具体的so的更多相关文章

  1. cmake find_package 命令

    1. find_package(<Name>)命令首先会在模块路径中寻找 Find<name>.cmake,这是查找库的一个典型方式. 具体查找路径依次为CMake:  变量$ ...

  2. cmake find_package说明

    CMake中find_package功能演示 find_package可以被用来在系统中自动查找配置构建工程所需的程序库.在linux和unix类系统下这个命令尤其有用.CMake自带的模块文件里有大 ...

  3. Cmake find_package()相关

    也就是find_package可以帮助直接找到库的头文件和库文件(.lib,dll .etc) References: http://blog.csdn.net/dbzhang800/article/ ...

  4. cmake find_package 中,include_directories,target_link_libraries 的值怎么知道?

    拿Sophus库为例: find_package(Sophus REQUIRED) include_directories(${Sophus_INCLUDE_DIRS}) target_link_li ...

  5. cmake构建时指定编译器架构(x86 or x64)

    vs2015 x64编译器为例,cmake命令如下: cmake -G "Visual Studio 14 Win64" path\to\source\dir 去掉Win64,就是 ...

  6. ROS初级教程 cmake cmakelist.txt 的编写教程

    有很多 的时候我们使用别人的程序包.然后添加东西的时候缺少什么东西,会使程序编译不过去,甚至无法运行,接下来介绍一下cmakelist.txt 的每一行的作用.为了以后添加和修改方便. 2.整体结构和 ...

  7. android studio中为gradle指定cmake版本

    Android Studio相当于是Intellij基础上写了一个AS插件,这个插件使用gradle作为构建系统,因此构建出现问题先考虑gradle的文档. gradle可以使用native buil ...

  8. cmake命令收集

    cmake中一些预定义变量 PROJECT_SOURCE_DIR 工程的根目录 PROJECT_BINARY_DIR 运行cmake命令的目录,通常是${PROJECT_SOURCE_DIR}/bui ...

  9. ubuontu16.04安装Opencv库引发的find_package()错误信息处理及其简单使用

    在安装完Opencv库之后,打算测试一下Opencv库是否成功安装.下面是用的例子对应的.cpp代码以及对应的CMakeLists.txt代码: .cpp文件: #include <stdio. ...

随机推荐

  1. iframe实现伪ajax

    iframe实现伪ajax 数据提交的两种方式: Form Ajax Ajax提交数据的方法: JS实现 Jquery “伪”Ajax "伪"Ajax: iframe+from实现 ...

  2. ECMAScript6 入门 变量的解析赋值

    ES6 允许按照一定模式,先=从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 这句话的解释:第一步从数组或者对象中提取值,第二步将提取到的值对变量进行赋值 数组的解 ...

  3. C++ 中递归实现 二项式展开式(a+b)^ n 的表达式

    C++ 中递归实现 二项式展开式 的表达式 前几天,一个数学系读研的同学来问有什么软件可以来求 (a+b)^n 这种表达式类型的展开式,我随口一说了 Octave , 毕竟这个开源的还是可以的,后来他 ...

  4. linux学习笔记 apache php mysql +linux

    1 #yum remove httpd 2 #yum -y install httpd php-common php-devel php-gd php-mcrypt php-mbstring php- ...

  5. UVA 221 Urban Elevations

    思路: 一些解释: ①:建筑的排序: 下面是以输入顺序为标号,在数组bd中的顺序: 排序后在数组bd中的顺序: 以后我们比较就按这个顺序 ②:x坐标的排序 x的内容是每一个建筑的左边界和右边界,我们把 ...

  6. google像apple 30亿美元购买流量

    google花费30亿美元像apple购买流量作为iphone默认搜索引擎.

  7. 解决在VUE中绑定WebSocket事件无法传值的问题

    this.webSocket.onerror =(env)=>{ this.onError(env) }; https://jsfiddle.net/dko6g9a4/1/

  8. tomcat端口被占用的问题

    在dos下,输入  netstat   -ano|findstr  8080  //说明:查看占用8080端口的进程 显示占用端口的进程 taskkill  /pid  6856  /f  //说明, ...

  9. 流畅的Python读书笔记(二)

    2.1 可变序列与不可变序列 可变序列 list. bytearray. array.array. collections.deque 和 memoryview. 不可变序列 tuple. str 和 ...

  10. nodejs 支付宝app支付

    [链接]单笔转账到支付宝账户产品介绍更新时间:https://docs.open.alipay.com/309 const crypto = require('crypto') const momen ...