使用VC-LTL編譯boost 1.68.0

1 人贊了文章

背景

bjam/b2不支持的include以及lib環境變數,這導致boost無法快速的通過「VC-LTL helper for nmake.cmd」編譯。

解決方案

不過還好,bjam/b2支持include參數,可以添加額外需要的包含目錄。

因此我們可以有以下腳本來完成boost靜態庫編譯:

::cmd 腳本,如需編譯x64,請選擇 vcvars64.bat/vcvarsx86_amd64.batcall "C:Program Files (x86)Microsoft Visual Studio2017CommunityVCAuxiliaryBuildvcvars32.bat"::載入VC-LTLcall "I:VC-LTLVC-LTL helper for nmake.cmd"::根據"VC-LTLconfigconfig.cmd"的set include指令,可以推算出VC-LTL需要額外的include路徑。::然後我們通過include參數傳入前置VC-LTL路徑,最後耐心等待編譯完成即可。bjam --with-date_time --with-system --with-regex release address-model=32 link=static runtime-link=static "include=%VC_LTL_Root%config%OsPlatformName%" "include=%VC_LTL_Root%VC%VC-LTLUsedToolsVersion%include" "include=%VC_LTL_Root%VC%VC-LTLUsedToolsVersion%atlmfcinclude" "include=%VC_LTL_Root%ucrt%VC-LTLTargetUniversalCRTVersion%"

同理,如果我們需要編譯 boost動態庫態庫,我們可以執行以下腳本:

::cmd 腳本,如需編譯x64,請選擇 vcvars64.bat/vcvarsx86_amd64.batcall "C:Program Files (x86)Microsoft Visual Studio2017CommunityVCAuxiliaryBuildvcvars32.bat"::載入VC-LTLcall "I:VC-LTLVC-LTL helper for nmake.cmd"::根據"VC-LTLconfigconfig.cmd"的set lib指令,可以推算出VC-LTL需要額外的lib路徑。::然後我們通過include以及library-path參數傳入前置VC-LTL路徑,最後耐心等待編譯完成即可。bjam --with-date_time --with-system --with-regex release address-model=32 link=shared runtime-link=static "include=%VC_LTL_Root%config%OsPlatformName%" "include=%VC_LTL_Root%VC%VC-LTLUsedToolsVersion%include" "include=%VC_LTL_Root%VC%VC-LTLUsedToolsVersion%atlmfcinclude" "include=%VC_LTL_Root%ucrt%VC-LTLTargetUniversalCRTVersion%" "library-path=%VC_LTL_Root%lib%PlatformShortName%%OsPlatformName%" "library-path=%VC_LTL_Root%lib%PlatformShortName%%OsPlatformName%%LTL_Mode%" "library-path=%VC_LTL_Root%VC%VC-LTLUsedToolsVersion%lib%PlatformShortName%" "library-path=%VC_LTL_Root%VC%VC-LTLUsedToolsVersion%lib%PlatformShortName%%OsPlatformName%" "library-path=%VC_LTL_Root%ucrt%VC-LTLTargetUniversalCRTVersion%lib%PlatformShortName%"

尾聲

OK,現在讓我們盡情的使用boost吧~

mingkuang

推薦閱讀:

相关文章