【问题标题】:CMake cannot find MSVC after compiler update编译器更新后 CMake 找不到 MSVC
【发布时间】:2023-01-10 02:04:54
【问题描述】:

我在 Windows 系统上使用 VSCode(版本 1.74.2)。 我的项目需要 CMake (v 3.24) 和 MSVC 编译器。

我安装了 MSVC 19.31,它与 VSCode 和 CMake 套件(自动找到)配合使用效果很好。

今天我需要将 MSVC 升级到 19.34。幸运的是,这没有导致任何问题,除了 VSCode 不再找到编译器这一事实。

显然我清除了所有构建目录,因此 CMake 文件中没有旧编译器的残余。并使用开发人员命令提示符验证了编译器安装。

我尝试扫描工具包,发现“Visual Studio Professional 2022 Release - XXX”(XXX = [x86|x86_amd64|amd64_x86|amd64])工具包。我选择了“amd64”套件。配置导致:

[cmake] CMake Error at C:/Program Files/CMake-3.24.1/share/cmake-3.24/Modules/CMakeDetermineCCompiler.cmake:49 (message):
[cmake]   Could not find compiler set in environment variable CC:
[cmake] 
[cmake]   cl.exe.
[cmake] Call Stack (most recent call first):
[cmake]   CMakeLists.txt:9 (project)
[cmake] 
[cmake] 
[cmake] CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
[cmake] CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
[cmake] -- Configuring incomplete, errors occurred!

所以很明显找不到编译器。

我试图删除套件文件并重新扫描。在 C_Cpp > Default Compiler Path 设置中添加路径导致错误。

Unable to resolve configuration with compilerPath "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.34.31933\bin\Hostx64\x64".  Using "cl.exe" instead.

啊,是的,我还重新启动了机器,启动了 VS,关闭并重新打开 VSCode(几次)——这些东西有时对 Microsoft 产品有帮助,但这次没有。

如果有任何有用的 cmet,我会很高兴。

【问题讨论】:

  • 那是 CMake,与 VSCode 或 VC++ 无关...简单的解决方案,编辑 CMakeCache.txt 文件以指向正确的目录
  • @ChrisMM 这最终是 CMake,但在开始时它与 VS Code 相关。一旦我拿到电脑,我会回答这个问题。

标签: c++ cmake


【解决方案1】:

这是您使用 VS Code 打开的项目配置文件的问题。 CMake VS Code 插件的工作方式是为您的项目创建至少两个特殊文件:

  • c_cpp_properties.json
  • tasks.json

您主要对 c_cpp_properties.json 文件感兴趣,这是我从我回答的另一个问题中提取的示例文件:

{
"configurations": [
    {
        "name": "Mac",
        "includePath": [
            "${workspaceFolder}/**"
        ],
        "defines": [],
        "macFrameworkPath": [
            "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"
        ],
        "compilerPath": "/usr/bin/clang",
        "cStandard": "c17",
        "cppStandard": "c++17",
        "intelliSenseMode": "macos-clang-x64"
    }
],
"version": 4
}

你的看起来很相似。

您对名为的元素(通常在底部)感兴趣compilerPath

由于您将 MSVC 更新为更新版本,您仍然在此处传递错误的路径(我可以告诉您从 14.xxx 升级)。

通过更正更新版本的路径,您很可能会解决您的问题。

笔记:您可能需要更新更多这些变量(甚至可能在两个文件中)。但是,这就是您的问题所在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2021-09-06
    相关资源
    最近更新 更多