什么是 Visual Studio 项目中的“平台工具集”设置
Posted
技术标签:
【中文标题】什么是 Visual Studio 项目中的“平台工具集”设置【英文标题】:What is "Platform Toolset" setting in visual studio project 【发布时间】:2014-12-17 03:02:21 【问题描述】:我有三个疑问。有人帮忙吗?
-
什么是VS项目中的“Platform Toolset”项目设置
为什么需要这样的设置
如果我更改设置(v110 到 v100)会发生什么
【问题讨论】:
它将用于编译代码的编译器版本从 v11.0 切换到 v10.0。 This Wikipedia article 列出了 VS 和 VC++ 编译器版本。 它的编译器版本。这意味着您可以使用 VS2012,但如果您安装了 VS2010 的编译器,则可以使用它进行编译。您还可以使用“第 3 方”编译器,例如 llvm 【参考方案1】:它是一个 MSBuild 属性,用于控制您要使用的平台工具集的特定版本。
更多信息在这里:http://msdn.microsoft.com/en-us/library/windows/hardware/hh454232%28v=vs.85%29.aspx
您很可能希望使用最新的稳定 Windows SDK。您可以检查您正在使用的工具集,查看您的 Visual Studio 项目文件 (.vcxproj),查找此 XML 条目:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"
Label="Configuration">
<ConfigurationType>Driver</ConfigurationType>
<DriverType>KMDF</DriverType>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
</PropertyGroup>
【讨论】:
会影响编译后应用的向后兼容性吗?因此,如果您使用所有最新的 SDK/工具集进行编译,这是否意味着该应用程序将无法在旧版本的 Windows 上运行(或可能无法运行)?【参考方案2】:它是用于编译和链接项目的所有工具的版本。
【讨论】:
所有工具是什么意思? 主要是编译器和链接器。 和 C++ 库【参考方案3】:更何况它是用于构建项目的工具链版本。因此,取决于您选择的版本,使用不同的编译器、链接器(等)版本。如果您选择随 VS2017 (v141) 发布的工具集版本,MSBuild 将使用此工具集中的工具来构建您的项目。
它在由 YoavKlein 提供的链接下得到了很好的描述。 “平台工具集由 C++ 编译器 (cl.exe) 和链接器 (link.exe) 以及 C/C++ 标准库组成。自 Visual Studio 2015 以来,工具集的主要版本保持在 14,这意味着使用 Visual Studio 2019 或 Visual Studio 2017 编译的项目与使用 Visual Studio 2015 编译的项目向后兼容 ABI。自 Visual Studio 2015 以来,每个版本的次要版本都更新了 1: 视觉工作室 2015:v140 视觉工作室 2017:v141 Visual Studio 2019:v142"
因此,如果主要版本相同,ABI 没有区别(但在您的情况下,您询问从 v110 到 v100 的更改,因此兼容性可能会被破坏),但可能会发生 f.e.旧版本工具集提供的编译器未实现新的或即将到来的 c++ 标准等的某些功能。
【讨论】:
【参考方案4】:在 Visual Studio 的解决方案资源管理器中,打开项目的快捷菜单(不是解决方案),然后选择“属性”以打开项目的“属性页”对话框。
在“属性页”对话框中,打开“配置”下拉列表,然后选择“所有配置”。
在对话框的左窗格中,展开配置属性,然后选择常规。
在右侧窗格中,选择平台工具集,然后从下拉列表中选择所需的工具集。例如,如果您已安装 Visual Studio 2010 工具集,请选择 Visual Studio 2010 (v100) 以将其用于您的项目。
选择确定按钮。
【讨论】:
【参考方案5】:我会参考这个链接,我认为那里解释得更好: https://docs.microsoft.com/en-us/cpp/build/how-to-modify-the-target-framework-and-platform-toolset?view=vs-2019
【讨论】:
您好 YoavKlein,您能否将链接中解释的相关部分包括在内? Answers with links are usually not considered good answers以上是关于什么是 Visual Studio 项目中的“平台工具集”设置的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 中的 Azure SQL 数据库 - 目标平台差异(V12 与普通)?
Visual Studio 中的“stdafx.h”是做啥用的?
使用平台工具集 v120 (Visual Studio 2013) 在 Visual Studio 2015 中创建 C++/CLI 项目