Linux下安裝使用boost庫
apt命令安裝
sudo apt install libboost-dev
sudo apt install libboost-all-dev
這兩個命令可以安裝默認(rèn)版本的boost庫,如果想安裝特定版本,需要從源碼安裝
源碼安裝
- 下載boost源碼,如1.80版本
- 解壓
tar -xjf boost_XX
- 生成b2
./bootstrap.sh
- 編譯生成
./b2
這一步在當(dāng)前目錄編譯生成了boost的庫,在stage/lib下可以看到
- 編譯生成后需要安裝
./b2 --prefix=/usr/local install
這一步會將boost安裝到/usr/local下,頭文件安裝到/usr/local/include/boost下,庫文件安裝到/usr/local/lib/下,后綴會包含boost的版本
編譯參數(shù)
--prefix=<PREFIX> 編譯后安裝路徑,默認(rèn)C:\Boost
--build-type=<type> 編譯類型,可選minimal(最?。?、complete(完整),默認(rèn)minimal。
--with-<library> 加入此參數(shù),代表只編譯的庫。
--without-<library> 加入此參數(shù),代表忽略編譯的庫。
toolset 編譯器,win下默認(rèn)msvc,用MinGW則選擇gcc。
完整編譯(會編譯包含/不包含運(yùn)行時庫的debug/release的動態(tài)/靜態(tài)庫),編譯器選擇MinGW(gcc),多線程,編譯完成后將庫和頭文件復(fù)制到prefix路徑
使用
boost庫中有兩類型庫,一種是不需要編譯的,只需要包含hpp文件即可,另一種是需要編譯的庫,兩種庫采用cmake時有些區(qū)分。
不需編譯的
不需要編譯的boost庫由于沒有對應(yīng)的庫文件,所以在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()