Colderleo's blog Colderleo's blog
首页
Linux
C++
Python
前端
工具软件
mysql
索引
关于
GitHub (opens new window)

Colder Leo

热爱代码的打工人
首页
Linux
C++
Python
前端
工具软件
mysql
索引
关于
GitHub (opens new window)
  • bug定位的一些情形
  • c++性能调优,可能的情况
  • total-编程知识点集锦
  • hpc_common.hpp
  • memory order 内存模型
  • 类型推导之auto-template-decltype
  • 完美转发forward源码分析
  • 左值和右值,右值引用、重载 std-move,引用折叠
  • cmake用法
  • alignas、alignof、sizeof实现内存对齐分配
  • 通过宏定义控制debug打印
  • 程序耗时性能测试
  • 线程池开源项目阅读
  • C++类中包含没有默认构造函数的成员
  • C++可变参数模板
  • C++属性继承 public protected private
  • C++智能指针
  • C++导出so的方法,以及extern C 注意事项
  • 四种spin lock
  • condition_variable和unique_lock
  • dpdk、kernel bypass
  • 智能网卡solarflare、Mellanox、X10等
  • 汇编寄存器和常见指令
  • c++ 类的静态成员变量未定义
  • C++获取类成员函数地址
  • preload示例
  • C++异常安全和RAII
  • C++11单例模式
  • C++歪门邪道
  • boost-program-option用法
  • c++17通过模板获取类成员的个数
  • 通过模板实现结构体成员拷贝-按成员名匹配
  • STL学习路径
  • boost库安装使用方法
    • cmake中使用boost filesystem
      • cmake中使用boost
      • windows安装boost库
      • cmake编写示例
  • C++文件读写
  • linux下socket通信demo,server和client
  • makefile写法
  • RxCpp
  • C++
gaoliu
2021-10-06
目录

boost库安装使用方法

# cmake中使用boost filesystem

https://my.oschina.net/iamhere/blog/513455

tut1.cpp (来自boost自带的示例代码):

//  filesystem tut1.cpp  ---------------------------------------------------------------//

//  Copyright Beman Dawes 2009

//  Distributed under the Boost Software License, Version 1.0.
//  See http://www.boost.org/LICENSE_1_0.txt

//  Library home page: http://www.boost.org/libs/filesystem

#include <iostream>
#include <boost/filesystem.hpp>

using namespace boost::filesystem;

int main(int argc, char* argv[])
{
  if (argc < 2)
  {
    std::cout << "Usage: tut1 path\n";
    return 1;
  }
  std::cout << argv[1] << " " << file_size(argv[1]) << '\n';
  return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

CMakeLists.txt:

cmake_minimum_required(VERSION 3.3)

project(cmaketest CXX)
#project(cmaketest)


set(BOOST_ROOT "/opt/boost")

#set(Boost_USE_STATIC_LIBS ON)
#set(Boost_USE_MULTITHREADED ON)
#set(Boost_USE_STATIC_RUNTIME OFF)


# filesystem依赖system
#
find_package(Boost REQUIRED COMPONENTS
#  regex
filesystem
system
)

if(NOT Boost_FOUND)
  message("未发现Boost")
endif()


aux_source_directory(. srcs)

include_directories(${Boost_INCLUDE_DIRS}
#  /opt/boost/lib
  )


add_executable(hello ${srcs})

target_link_libraries(hello ${Boost_LIBRARIES})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

# cmake中使用boost

  • find_package找不到library,打开boost的debug-on找原因
    • https://blog.csdn.net/lc315yuhuofei/article/details/117999481 (opens new window)
    • set(Boost_DEBUG ON)打开debug,会显示boost在查找过程中的详细信息
    • 里面会有很长的searching for: Searching for LOG_LIBRARY_RELEASE: libboost_log-mgw81-mt-1_72; 这些search的就是cmake指定的编译器对应的lib文件名,需要用相同版本的编译器去编译boost才能获得,否则就会找不到。
  • 查找的文件名和编译boost时的编译器不匹配:https://www.cnblogs.com/xueye9/p/14346585.html (opens new window)
    • 当文件名和编译器不匹配时,要么用编译器重新编译boost,要么cmake指定编译boost时用的编译器。
  • include添加头文件,
    • https://www.cnblogs.com/hustcpp/p/12922998.html (opens new window)
    • INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR}),添加了头文件包含目录,才能在代码中正确include对应的头文件。

# windows安装boost库

https://blog.csdn.net/s_lisheng/article/details/72871218

  • 首先安装好vs2017或者2019
  • 下载boost并解压,http://www.boost.org (opens new window),例如boost_1_64_0
  • 在下载解压的boost_1_64_0目录运行cmd,执行bootstrap.bat,生成b2.exe和bjam.exe
  • 运行b2.exe stage编译安装boost
  • 编译出来的东西是库(lib),注意用哪个编译器编译出来的库,在用cmake使用的时候,也要用对应的编译器。否则find_package会找不到。

# cmake编写示例

project(cmake_test)
CMAKE_MINIMUM_REQUIRED (VERSION 3.0)

# 添加C++17支持
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 设置boost目录
set(BOOST_ROOT D:/software/boost_1_72_0)
find_package(Boost REQUIRED COMPONENTS filesystem log)
# 包含boost头文件和库目录
# message(STATUS "Boost_INCLUDE_DIRS is : ${Boost_INCLUDE_DIRS}")
# message(STATUS "Boost_LIBRARY_DIRS is : ${Boost_LIBRARY_DIRS}")
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})

# 模块找不到时,可能有用的一些操作
# set(BOOST_LIBRARYDIR D:/software/boost_1_72_0/stage/lib)
# set(Boost_USE_STATIC_LIBS ON)
# set(Boost_DEBUG ON)

# 将当前文件夹中所有的源文件添加到变量DIR_SRCS中
aux_source_directory(. DIR_SRCS)
# 将${DIR_SRCS}所对应的源文件编译成可执行文件cmake_test
add_executable(cmake_test ${DIR_SRCS})

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
编辑 (opens new window)
上次更新: 2022/01/06, 15:13:45
STL学习路径
C++文件读写

← STL学习路径 C++文件读写→

最近更新
01
通过模板实现结构体成员拷贝-按成员名匹配
05-07
02
c++17通过模板获取类成员的个数
05-01
03
avx-sse切换惩罚
04-30
更多文章>
Theme by Vdoing | Copyright © 2019-2023 Colder Leo | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×