Linux下安装使用boost库
apt命令安装
sudo apt install libboost-dev
sudo apt install libboost-all-dev
这两个命令可以安装默认版本的boost库,如果想安装特定版本,需要从源码安装
源码安装
- 下载boost源码,如1.80版本
- 解压
tar -xjf boost_XX
- 生成b2
./bootstrap.sh
- 编译生成
./b2
这一步在当前目录编译生成了boost的库,在stage/lib下可以看到
- 编译生成后需要安装
./b2 --prefix=/usr/local install
这一步会将boost安装到/usr/local下,头文件安装到/usr/local/include/boost下,库文件安装到/usr/local/lib/下,后缀会包含boost的版本
编译参数
--prefix=<PREFIX> 编译后安装路径,默认C:\Boost
--build-type=<type> 编译类型,可选minimal(最小)、complete(完整),默认minimal。
--with-<library> 加入此参数,代表只编译的库。
--without-<library> 加入此参数,代表忽略编译的库。
toolset 编译器,win下默认msvc,用MinGW则选择gcc。
完整编译(会编译包含/不包含运行时库的debug/release的动态/静态库),编译器选择MinGW(gcc),多线程,编译完成后将库和头文件复制到prefix路径
使用
boost库中有两类型库,一种是不需要编译的,只需要包含hpp文件即可,另一种是需要编译的库,两种库采用cmake时有些区分。
不需编译的
不需要编译的boost库由于没有对应的库文件,所以在find_package命令中不能指定COMPONENTS,会找不到,只需要找到boost,添加boost的头文件路径即可
find_package(Boost REQUIRED) #
if(Boost_FOUND)
target_include_directories(${Boost_INCLUDE_DIRS})
endif()
需要编译的
find_package(Boost REQUIRED COMPONENTS <lib>) # 需要添加库名称
if(Boost_FOUND)
target_include_directories(${Boost_INCLUDE_DIRS})
target_link_libraries(Boost::boost::<lib_name>)
endif()