需要使用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. python mysql中文乱码

    问题: MySQLdb存入数据库后,在命令行查询 "select * from ip;",其中的中文都是乱码的. 但是通过python 执行 "select * from ...

  2. 002.Ceph安装部署

    一 前期准备 1.1 配置规格 节点 类型 IP CPU 内存 ceph-deploy 部署管理平台 172.24.8.71 2 C 4 G node1 Monitor OSD 172.24.8.72 ...

  3. C# 使用 Proxy 代理请求资源

    C# 使用 Proxy 请求资源,基于 HttpWebRequest 类 前言 这是上周在开发 C# 中使用 Proxy 代理时开发的一些思考和实践.主要需求是这样的,用户可以配置每次请求是否需要代理 ...

  4. spring_AOP

    例子代码 理解AOP AOP为Aspect Oriented Programming的缩写,意为:面向切面编程.大概意思就是在原有源代码的基础上,增加功能,而又不修改原有的代码. 术语 切面(Aspe ...

  5. xss小结-从xss平台搭建到csp规则

    0x00前言 xss是跨站脚本攻击,利用嵌入js代码达到‘控制’对方浏览器的作用,测试的时候我们是用alert(1)弹窗,而做CTF也好,实际中的漏洞利用也好一般是用xss获取管理员的cookie 0 ...

  6. webstorm离线装载Material Theme UI

    首先说说需求,由于直接用webstorm听说VS挺火的,但是初恋的感觉是其他任何编辑器无法替代的 瞎说了一些话,新公司内网开发,用的是vscode,但是我还是喜欢用webstorm,连不上网,所以不能 ...

  7. React + antd 组件离开页面以后出现Can only update a mounted or mounting component 的解决办法

    做项目的过程中,来回切换页面时,一直遇到Can only update a mounted or mounting component 这个问题,原因是当离开页面以后,组件已经被卸载,执行setSta ...

  8. 1046 Gridland

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1046 难点在于读懂题意 题意:输入一个n*m的点阵,间距为1,问你遍历完所有点阵并回到起点的最短路径是多少 ...

  9. 反射与内置方法str del

    1.反射 用字符串来操作类或者对象的属性 class People:# country= 'china'# def __init__(self,name):# self.name= name## de ...

  10. (转)为什么wait(),notify()和notifyAll()必须在同步块或同步方法中调用

    我们常用wait(),notify()和notifyAll()方法来进行线程间通信.线程检查一个条件后就行进入等待状态,例如,在“生产者-消费者”模型中,生产者线程发现缓冲区满了就等待,消费者线程通过 ...