c++ CMake在编译器更新后找不到MSVC

ecbunoof  于 2023-01-10  发布在  其他
关注(0)|答案(1)|浏览(375)

我在Windows系统上使用VSCode(Version 1.74.2)。我的项目需要CMake(v 3.24)和MSVC编译器。
我安装了MSVC 19.31,它与VSCode和CMake工具包(自动找到的)配合得很好。
今天我需要将MSVC升级到19.34。幸运的是,除了VSCode找不到编译器之外,这没有引起任何问题。
显然我清除了所有的build目录,所以在CMake文件中没有旧编译器的残余。并且编译器的安装是通过开发者命令提示符验证的。
我尝试扫描工具包“Visual Studio专业版2022发行版- XXX”(XXX = [x86| x86_amd64|修订版64_x86| amd 64])工具包。我选择了“amd 64”工具包。配置导致:

[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〉默认编译器路径设置中添加路径导致错误。

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(几次)--这些东西有时对微软的产品有帮助,但这次没有。
我很乐意听到任何有益的评论。

pbwdgjma

pbwdgjma1#

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

  • 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升级的)。
通过更正到较新版本的路径,您很可能会修复您的问题。

**注意:**您可能需要更新更多的变量(甚至可能在两个文件中)。但是,这正是问题的根源。

相关问题