【问题标题】:How can I change MSVC compiler version in a CMAKE project?如何更改 CMAKE 项目中的 MSVC 编译器版本?
【发布时间】:2021-09-06 08:02:04
【问题描述】:

由于微软(再次)破坏了版本14.29.30037中的编译器(由于某种原因被CMAKE报告为19.29.30038.1)(look here)我需要回到14.28.something。我已经通过 Visual Studio 安装程序下载了14.28.29910,我的Microsoft Visual Studio\2019\Community\VC\Tools\MSVC 文件夹现在包含两个版本的文件夹。

但是我找不到强制 CMAKE 使用这个特定旧版本的方法。我使用 CLion CMAKE 集成,我的设置如下所示。

请注意,我已经尝试将 MakeC CompilerC++ Compiler 路径设置为旧编译器中的对应路径。这导致 CMAKE 报告所需的 19.28.29915.0 编译器版本(顺便说一下,喜欢微软使用的不同版本控制约定的数量)。尽管如此,当我尝试构建项目时,我得到以下信息:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\include\yvals_core.h(541): fatal error C1189: #error:  STL1001: Unexpected compiler version, expected MSVC 19.29 or newer.
NMAKE : fatal error U1077: 'C:\PROGRA~2\MICROS~2\2019\COMMUN~1\VC\Tools\MSVC\1428~1.299\bin\HostX86\x64\cl.exe' : return code '0x2'
Stop.

我猜这意味着并非编译器的所有部分(在这种情况下包括一些)都切换到旧版本。

如果出于某种原因,我的任何代码可以帮助您回答这个问题,则可以使用该 repo here

还请注意,尽管我很想简单地切换到 GCC,但由于 Windows 上的 CUDA 支持,我不能。我也不能使用不同的(旧)Visual Studio 版本,因为该项目需要 C++ 20。另外,还有一个额外的问题:像微软这样相关的公司怎么可能从字面上破坏企业级开发工具?

【问题讨论】:

  • 您是否尝试过 CLion 中的“工具->CMake->重置缓存并重新加载项目”?

标签: c++ cmake clion msvc12


【解决方案1】:

以下解决方案帮助了我:

  1. 在 Visual Studio 安装目录中找到 vcvarsall.bat。 (我有Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvarsall.bat
  2. 运行vcvarsall.bat <your_arch> -vcvars_ver=<msvc_version>。在你的情况下,输入-vcvars_ver=14.28<your_arch> 的示例是 amd64。这将为所需的 MSVC 版本设置所有环境变量。
  3. 使用创建的环境从命令行启动 CLion。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 2022-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多