c++ - 在编译时检测 Visual Studio 构建工具版本

标签 c++ visual-studio msbuild build-tools

有没有办法使用预处理器标志或任何其他方式获取 Visual Studio 使用的构建工具版本,以便代码/编译器可以在编译时决定如何编译代码?

使用构建工具 v140 与 v143 时,头文件/代码存在一些差异,但是为了使其与两个版本的构建工具兼容,我想使用 #ifdef< 封装一些代码 或类似的东西,这样它就可以使用任一版本进行构建,而无需对代码进行任何更改并保持向后兼容。

最佳答案

是的,您可以将以下内容添加到预处理器定义中:

MSC_PLATFORM_TOOLSET_$(PlatformToolset);

然后像这样使用它:

#ifdef MSC_PLATFORM_TOOLSET_v140#if 已定义 ( MSC_PLATFORM_TOOLSET_v140 )

例如:

#if defined ( MSC_PLATFORM_TOOLSET_v140 )
// Do something
#elif defined ( MSC_PLATFORM_TOOLSET_v143 ) // VS2022 Toolset
// Do something else
#endif

关于c++ - 在编译时检测 Visual Studio 构建工具版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75814321/

相关文章:

C++将bitflag取消设置为其实际值

c++ - 并行处理碰撞对

.net - 找不到引用的 DLL,因为 VS 命名空间错误

visual-studio-2010 - 构建网站部署包作为构建后事件

tfs - 如何在我的脚本 (.proj) 中使用构建定义中设置的 MSBuild 参数

msbuild - 如何使用 MSbuild 向多个地址发送电子邮件

c++ - 关于隐式声明的复制构造函数的引用在逻辑上不清楚

c++ - char* textMessages[] 在内存中是如何格式化的?

winforms - 如何更改 Visual Studio IDE 中表单控件的默认字体

visual-studio - Visual Studio 2012 不允许我退出 TFS,因此我可以输入新的用户名/密码