选择特定版本的 Visual Studio 命令行工具包并针对特定版本的 C++ 运行时环境编译文件

Posted

技术标签:

【中文标题】选择特定版本的 Visual Studio 命令行工具包并针对特定版本的 C++ 运行时环境编译文件【英文标题】:Choose a certain version of Visual Studio's command line toolkit and compile files against a certain version of a C++ run-time environment 【发布时间】:2018-08-14 16:55:38 【问题描述】:

我正在使用 Visual Studio 2017。尝试使用特定版本的 C++ 工具包编译包,并针对特定版本编译 C++ 运行时环境。

在我的情况下,这意味着针对最新 c++ 运行时环境库的最新工具包。

我该如何做到这一点?我尝试使用/std:c++17/std:latest 但这会导致针对vc140.dll 编译的构建。

cl.exelink.exe 的文档都没有给出任何提示。

有什么想法吗?谢谢。

【问题讨论】:

“工具包”没有任何意义。它类似于“工具集”。构建工具集 cl.exe 是其中的一部分。 vc141.dll 没有任何意义。它类似于 vcruntime140.dll,该DLL 没有141 版本。他们没有为 VS2017 创建该运行时 DLL 的新版本,是的。没有迹象表明您有问题。 我的问题确实令人困惑。谢谢你指出。我修改了我的问题。我的意思是如何选择要编译的 c++ 标准库的版本。由于已经提出了答案,我已经离开了关于工具包版本的部分。 【参考方案1】:

在项目属性 UI 中,您可以在“常规”页面上设置平台工具集。

对于 v140,生成的命令行开始:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe

但是对于 v141 他们开始:-

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.12.25827\bin\HostX86\x86\CL.exe

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.12.25827\bin\HostX86\x86\link.exe

如果您将构建输出设置为诊断(通过工具->选项->构建和运行),您可以自己阅读命令行。

【讨论】:

这是我的错误。由于时间锁定,目前无法修改。 我的问题本身也很混乱;这与工具包的版本无关;但所需的 c++ 运行时环境的版本。 @Vega4 请不要因为未使用您未在问题中提供的信息而对答案投反对票。 找到一个 gui 设置做你想做的事情并查看它对命令行做了什么的一般技术可能仍然有用,在这种情况下,我们看到它实际上改变了 cl 的位置。 exe被调用。该文件夹恰好包含一个 vcruntime140.dll(并且没有 141)【参考方案2】:

您可以使用下拉菜单在此处设置它们

(project properties)
(configuration properties)
(general)
(platform toolset)

【讨论】:

问题是关于没有任何项目文件的命令行构建。 有趣。我看到了歧义。在问题真正关闭之前,您应该在问题中说清楚。

以上是关于选择特定版本的 Visual Studio 命令行工具包并针对特定版本的 C++ 运行时环境编译文件的主要内容,如果未能解决你的问题,请参考以下文章

为 cl.exe (Visual Studio Code) 指定命令行 C++ 版本

Visual Studio 2012 命令行内置

从命令行与 Visual Studio 运行 Profiler

在 Visual Studio Code 中选择以结束/开始行

swig 和使用 Visual Studio 2017 命令行构建项目

visual studio code 命令行创建发布一个项目