在Visual Sutdio 2017中使用boost庫


在Visual Sutdio 2017中使用boost庫

轉載 https://blog.csdn.net/u011054333/article/details/78648294

對C++有一定了解的同學一定聽說過boost庫,這是C++的一個著名類庫,在C++的地位感覺可以和Spring在Java中相比。boost向來有准標准庫之稱,很多新特性例如智能指針等都是先在boost中實現,后來被吸收到標准庫之中。而且boost實現了日志、算法、日期、地理、數學、線程協程等各種實用工具,所以如果要學習C++,boost是必須要學習的一個東西。

安裝boost

下載boost

boost官網是http://www.boost.org/,目前最新的版本是1.68,可以在這里下載。下載頁面里有Unix和Windows的源碼,以及Windows版本的預編譯包。我們選擇預編譯下載。

下載頁面

然后會彈出SourceForge的頁面,按照自己的系統版本和Visual Studio版本選擇最合適的版本下載,如果不確定的話,就下載all那個版本,是是最全的同時也是最大的。紅框標的是適合Visual Studio 2017的64位boost庫版本。后綴exe的是自解壓安裝包,下載之后打開它,選擇一個目錄,就會將預編譯的boost庫解壓到那里。

選擇版本

另外一種方式就是下載源碼,下載完成后解壓到一個目錄,例如我就放到了D:\DevTools\boost_1_68_0,目錄結構如下圖。如果用下載源碼這種方式,那么后面必須執行編譯這一個步驟。如果用的是預編譯版本,則不需要編譯。我推薦大家下載預編譯的版本,因為編譯這個過程實在是太慢了,沒幾個小時下不來。

目錄結構

boost目錄下是boost的頭文件,libs下是boost的源代碼。其他文件夾的內容是文檔和一些工具等等,就不介紹了。

添加環境變量

將你放置boost代碼的目錄設置為環境變量BOOST_ROOT,這個目錄將在后面用到。

編譯boost庫

首先確保你安裝了Visual Studio 2017,並安裝了 Visual Studio 2017 Developer Command Prompt工具。如果前面下載的是預編譯版本,則不需要這個步驟。

打開VS 2017 Developer Command Prompt,切換到boost目錄,執行bootstrap.bat腳本,如果執行成功的話,會生成b2.exe等幾個工具,這樣生成工具的工作就完成了。

然后簡單調用生成的b2.exe就可以編譯boost庫了。

b2.exe
  • 1

這個過程可能會持續幾個小時時間,因為boost庫確實也是一個比較大的項目。當然編譯這個步驟不是必須的,但是如果你想將來在項目中使用預編譯的boost類庫,那么這里就需要編譯。或者也可以直接在下載的時候直接選擇下載預編譯的版本

Visual Studio設置

項目設置

在VS中新建一個C++項目,然后打開項目屬性頁,然后切換到VC++目錄,在包含目錄和庫目錄中分別添加BOOST_ROOTBOOST_ROOT\libs兩個文件夾。注意圖中的語法,拼寫正確才能正確將環境變量展開為實際路徑。

項目屬性頁

包含目錄

庫目錄

然后打開鏈接器配置,在附加庫目錄中添加對應的文件夾。如果使用的是預編譯的boost,添加安裝目錄中的libXX-msvc-XXX(根據你下載的版本而不同),如果是自己源碼編譯的boost,添加stage\libs目錄(這個是編譯之后生成的目錄)。

鏈接路徑

配置完成后,就可以在項目中使用boost了。當然對於Visual Studio來說,還有更簡單的辦法,那就是使用NuGet。

使用NuGet添加

配置完之后,我還發現微軟的NuGet竟然也可以添加boost。方法很簡單,在項目菜單中點擊管理NuGet包,然后搜索boost,然后點擊右邊的下載按鈕即可。

NuGet安裝boost

由於boost是一個比較大的庫,所以這個安裝過程可能需要多花費幾分鍾。安裝完成后boost類庫會放到項目文件夾的package文件夾中。NuGet會自動幫我們做所有工作,我們接下來直接使用就可以了。

運行boost程序

配置好之后,就可以運行boost程序了。下面是一個簡單例子,使用了boost庫的一些高精度(最大可達100位)數學常量(值得吐槽的是C++標准庫居然沒有像樣的數學庫,能用的只有<cmath>,而且甚至連PI常量都沒有)。

#include <boost/math/constants/constants.hpp> #include <boost/multiprecision/cpp_dec_float.hpp> #include <iostream> #include <iomanip> using namespace std; using namespace boost::math::constants; using namespace boost::multiprecision; int main() { cout << "圓周率是:" << setprecision(50) << pi<cpp_dec_float_50>() << endl; cout << "自然對數e是:" << setprecision(50) << e<cpp_dec_float_50>() << endl; cout << "根號2是:" << setprecision(50) << root_two<cpp_dec_float_50>() << endl; return 0; } // 圓周率π是:3.1415926535897932384626433832795028841971693993751 // 自然對數e是:2.7182818284590452353602874713526624977572470937 // 根號2是:1.4142135623730950488016887242096980785696718753769

vs2015編譯boost 64位

---恢復內容開始---

step 1: 打開Developer Command Prompt for VS2015命令行窗口

step 2: 執行bootstrap.bat,產生bjam.exe

step 3:

  全部編譯的命令行:bjam --toolset=msvc-14.0 --build-type=complete stage
  部分編譯的命令行:bjam --toolset=msvc-14.0 --with-date_time --with-thread
  編譯成64位的命令:bjam --toolset=msvc-14.0 address-model=64 --build-type=complete stage 
  查看需要編譯庫的命令行:bjam --show-libraries

     bjam --toolset=msvc-14.0 address-model=64 --with-date_time --with-thread  --with-chrono  link=static runtime-link=static --stagedir="./bin/vs15_64" release

 

---恢復內容結束---

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM