about 2 years ago

最近工作上需要使用 Boost 這套有名的 C++ Library,我之前從來沒用過。Boost 大多數的模組都是 header only,只有少部份需要先編譯。紀錄一下編譯 Boost 的方法。

  • 第一步雙擊執行根目錄下的 bootstrap.bat,產生 Boost 自帶的編譯工具 b2.exe 和 bjam.exe
  • 第二步就是用 b2 來編譯 boost 指令如下:
b2 toolset=msvc-14.0 address-model=64 --with-system
  • 我並沒有深究 b2 和 bjam 到底有什麼差異,我個人一律用 b2
  • toolset 指編譯器,msvc-14.0 就是 VS2015,msvc-11.0 就是 VS2012,gcc 就是 gcc。
  • address-model 指定 32/64 bit
  • --with-xxx 就是指定要編譯的庫名稱 xxx,例如要編譯 system 就打 --with-system,編譯 chrono 就是 --with-chrono
  • 或者用 -a 要求完整編譯全部的庫,但是我在自己筆電上測試一下發現 15 分鐘還沒編完就放棄了。

產出的 lib 默認放在 stage/lib 目錄下,瞄一眼裡面的文件,如果有看見 libboost_chrono-vc140-mt-1_61.lib 之類的檔案冒出來就是編譯成功了。以上面那個檔案為例,就是成功編譯了 chrono 庫,目的編譯器是 vc140,boost 版本 1.61。

把這個路徑加進 Library search path 就行了。不需要到專案設定裡填寫每一個使用到的 lib 檔案,算是挺方便的。

← Mac 生態系的優點