over 1 year 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 檔案,算是挺方便的。