Visual Studio是否提供获取C++工具集标签的变量?适配Boost库命名
Visual Studio中获取Boost工具集标签的内置变量
当然有啦!Visual Studio的MSBuild环境里提供了现成的内置属性,能直接拿到对应Boost命名规则里的工具集标签,帮你轻松构建独立于工具集的库名称,具体来说:
$(PlatformToolsetVersion):这个属性会返回当前使用的工具集版本号,比如VS2019对应142,VS2022对应143。Boost的工具集标签是vcXX格式(比如vc142、vc143),你只需要把这个属性和vc拼接起来,就能得到完全匹配的标签:vc$(PlatformToolsetVersion)。- 这个方式兼容所有较新的VS版本,甚至老版本比如VS2010(工具集v100)也适用,拼接后就是
vc100,完美契合Boost的命名习惯。
给你举个MSBuild脚本里的实际用法例子:
<PropertyGroup> <!-- 生成Boost风格的工具集标签 --> <BoostToolset>vc$(PlatformToolsetVersion)</BoostToolset> <!-- 动态拼接Boost库文件名 --> <TargetBoostLib>libboost_regex-$(BoostToolset)-mt-d-1_81.lib</TargetBoostLib> </PropertyGroup>
这样不管你切换到哪个VS版本编译,$(TargetBoostLib)都会自动生成对应工具集的库名,完全不用手动修改。
如果是用CMake来配置项目,也有对应的变量CMAKE_VS_PLATFORM_TOOLSET_VERSION,用法类似:
set(BOOST_TOOLSET "vc${CMAKE_VS_PLATFORM_TOOLSET_VERSION}") set(BOOST_LIB_NAME "libboost_regex-${BOOST_TOOLSET}-mt-d-1_81.lib")
小补充:Boost的工具集标签本质就是Visual Studio工具集版本号的缩写,比如
vc71对应VS2003的v71工具集,vc140对应VS2015的v140工具集,所以直接用工具集版本号拼接是最准确可靠的方式。
内容的提问来源于stack exchange,提问作者Necktwi
相关产品推荐
相关产品推荐

