You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Visual Studio 2022 + CMake时出现Fatal error C1083问题求助

问题:VS2022中CMake项目无法找到Eigen头文件

问题现象

基于CMake的项目在命令行和Visual Studio 2019中可正常构建,但在VS2022中,无论选择Visual Studio 17 2022还是Visual Studio 16 2019作为编译器,均无法构建,报错如下:

Fatal error C1083: Cannot open include file: 'Eigen/Dense': No such file or directory exists.

最小复现示例

test.cpp

#include <iostream>
#include <Eigen/Dense>
 
using Eigen::MatrixXd;
 
int main()
{
  MatrixXd m(2,2);
  m(0,0) = 3;
  m(1,0) = 2.5;
  m(0,1) = -1;
  m(1,1) = m(1,0) + m(0,1);
  std::cout << m << std::endl;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.20 FATAL_ERROR)

project(TEST)
set (CMAKE_CXX_STANDARD 20)

find_package(EIGEN3 REQUIRED)

add_executable (${PROJECT_NAME}
    test.cpp
)

target_link_libraries (${PROJECT_NAME} Eigen3::Eigen)

CMakePresets.json

{
  "version": 2,
  "cmakeMinimumRequired": {
      "major": 3,
      "minor": 25,
      "patch": 0
  },
  "configurePresets": [
      {
          "name": "windows-vs22",
          "displayName": "Windows x64 Release",
          "description": "Default Windows CMake preset",
          "generator": "Visual Studio 17 2022",
          "binaryDir": "${sourceDir}/build/${presetName}",
          "architecture": {
              "value": "x64",
              "strategy": "external"
          },
        "cacheVariables": {
          "CMAKE_BUILD_TYPE": "Release",
          "CMAKE_MODULE_PATH": "${sourceDir}/conan/install/Release",
          "CMAKE_PREFIX_PATH": "${sourceDir}/conan/install/Release"

        },
          "vendor": {
              "microsoft.com/VisualStudioSettings/CMake/1.0": {
                  "hostOS": [
                      "Windows"
                  ]
              }
          }
      },
      {
          "name": "windows-vs19",
          "displayName": "Windows x64 Release",
          "description": "Default Windows CMake preset",
          "generator": "Visual Studio 16 2019",
          "binaryDir": "${sourceDir}/build/${presetName}",
          "architecture": {
              "value": "x64",
              "strategy": "external"
          },
        "cacheVariables": {
          "CMAKE_BUILD_TYPE": "Release",
          "CMAKE_MODULE_PATH": "${sourceDir}/conan/install/Release",
          "CMAKE_PREFIX_PATH": "${sourceDir}/conan/install/Release"

        },
          "vendor": {
              "microsoft.com/VisualStudioSettings/CMake/1.0": {
                  "hostOS": [
                      "Windows"
                  ]
              }
          }
      }
  ],
  "buildPresets": [
      {
          "name": "windows-vs22",
          "displayName": "Release",
          "configurePreset": "windows-vs22"
      },
      {
          "name": "windows-vs19",
          "displayName": "Release",
          "configurePreset": "windows-vs19"
      }
  ]
}

补充信息(编辑1)

VS2022中配置VS2019编译器的CMake日志:

Working directory: C:/Users/USERNAME/Desktop/mini_eigen/build/windows-vs19
1> [CMake] -- CMake Version: 3.29.5-msvc4
1> [CMake] -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19045.
1> [CMake] -- The C compiler identification is MSVC 19.29.30154.0
1> [CMake] -- The CXX compiler identification is MSVC 19.29.30154.0
1> [CMake] -- Detecting C compiler ABI info
1> [CMake] -- Detecting C compiler ABI info - done
1> [CMake] -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
1> [CMake] -- Detecting C compile features
1> [CMake] -- Detecting C compile features - done
1> [CMake] -- Detecting CXX compiler ABI info
1> [CMake] -- Detecting CXX compiler ABI info - done
1> [CMake] -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
1> [CMake] -- Detecting CXX compile features
1> [CMake] -- Detecting CXX compile features - done
1> [CMake] -- Conan: Component target declared 'Eigen3::Eigen'
1> [CMake] -- Configuring done (4.6s)
1> [CMake] -- Generating done (0.0s)
1> [CMake] -- Build files have been written to: C:/Users/USERNAME/Desktop/mini_eigen/build/windows-vs19
1> Extracted CMake variables.
1> Extracted source files and headers.
1> Extracted code model.
1> Extracted toolchain configurations.
1> Extracted includes paths.
1> CMake generation finished.

排查线索

  • 检查VS2022的CMake缓存:打开build目录下的CMakeCache.txt,确认CMAKE_PREFIX_PATH和CMAKE_MODULE_PATH的值是否与命令行一致,是否指向正确的Conan安装目录。
  • 验证Eigen安装路径:进入${sourceDir}/conan/install/Release,确认是否存在include/Eigen目录及其中的头文件。
  • 手动执行CMake命令:在VS2022开发者命令提示符中,运行cmake --preset windows-vs22完成配置,再执行cmake --build --preset windows-vs22,看是否能正常构建,排除VS集成层面的问题。
  • 对比项目包含路径:在VS2022中右键项目→属性→C/C++→常规→附加包含目录,查看是否包含Eigen的头文件路径,与VS2019的设置做对比。
  • 清理缓存重新生成:删除build目录下所有文件,重新在VS2022中生成CMake项目,避免旧缓存干扰。

内容的提问来源于stack exchange,提问作者sebwr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 16:32:05