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
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
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
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