使用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

推荐阅读:

相关文章