Boost 極簡編譯法
·
3min
·
chchwy
最近因為工作的緣故需要編譯 Boost
。Boost 這套大名鼎鼎的 C++ Library 中,大多數的模組都是 header-only,意思是模組裡只有標頭檔(*.hpp
) 沒有實現檔(*.cpp
),所以不需要編譯,引入(#include)標頭檔就可以直接用了。只有少部份模組需要先編譯,這裡紀錄一下編譯 Boost 的方法。
環境: Windows 10 編譯器: Visual Studio 2015
- 第一步,雙擊 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
指定要編譯的模組名稱,例如要編譯 system 就打--with-system
,編譯 chrono 就是--with-chrono
- 或者用
-a
要求編譯全部模組。編譯全部模組需要不少時間,我編了 15 分鐘發現還沒完成就放棄了。 - 產出的 lib 檔默認放在 stage/lib 目錄下,瞄一眼裡面的檔案,如果看見
libboost_chrono-vc140-mt-1_61.lib
之類的檔案冒出來就是編譯成功了。以該檔名為例,可以得知我們成功編譯了 chrono 模組,適用編譯器 vc140,boost 版本 1.61。
接著把把 boost 的根目錄加進 Include Path,把 /stage/lib 加進 Library Search Path,應該就可以順利使用我們自己編譯的 boost 了。不需要一一指名每個用到的 lib 檔,挺方便的。