VSCode+CMake环境下如何识别MSYS2安装的Eigen3Config.cmake
在VSCode中配置CMake项目时,添加Eigen3到CMakeLists.txt后重建项目,出现以下错误:
[cmake] CMake Error at CMakeLists.txt:4 (find_package):
[cmake] Could not find a package configuration file provided by "Eigen3" (requested
[cmake] version 3.3) with any of the following names:
[cmake]
[cmake] Eigen3Config.cmake
[cmake] eigen3-config.cmake
[cmake]
[cmake] Add the installation prefix of "Eigen3" to CMAKE_PREFIX_PATH or set
[cmake] "Eigen3_DIR" to a directory containing one of the above files. If "Eigen3"
[cmake] provides a separate development package or SDK, be sure it has been
[cmake] installed.
[cmake]
[cmake] -- Configuring incomplete, errors occurred!
我已尝试:
- 将
Eigen3_DIR设置为"/mingw64/share/eigen3/cmake"(该目录下确实存在Eigen3Config.cmake等文件) - 将
CMAKE_PREFIX_PATH设为上述相同路径 - 尝试将路径指向Eigen的include目录
但问题依旧。
VSCode执行的CMake命令如下:
[main] Building folder: GraphicsEngine [proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" --version [proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" -E capabilities [proc] Executing command: C:\msys64\ucrt64\bin\gcc.exe -v [main] Configuring project: GraphicsEngine [proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=C:\msys64\ucrt64\bin\gcc.exe -DCMAKE_CXX_COMPILER:FILEPATH=C:\msys64\ucrt64\bin\g++.exe -SG:/Documents/Projects/GraphicsEngine -Bg:/Documents/Projects/GraphicsEngine/build -G "MinGW Makefiles"
我的CMakeLists.txt内容:
cmake_minimum_required (VERSION 3.0) project (graphics_engine) find_package (Eigen3 3.3 REQUIRED NO_MODULE) add_executable (example Raytracer.cpp) target_link_libraries (example Eigen3::Eigen)
我通过MSYS2安装了mingw-w64-x86_64-eigen3包,请问哪里操作有误或遗漏了什么?
路径匹配问题:你使用的是类Unix格式路径
/mingw64/share/eigen3/cmake,但Windows环境下CMake需要Windows格式的绝对路径;同时你当前用的是ucrt64编译器环境,安装的Eigen3实际位于C:/msys64/ucrt64/share/eigen3/cmake,而非mingw64目录,两者环境不匹配导致路径无效。修正路径配置:
- 打开文件资源管理器,确认
C:\msys64\ucrt64\share\eigen3\cmake目录下存在Eigen3Config.cmake文件 - 在VSCode的CMake配置中,将
Eigen3_DIR设置为这个Windows格式的绝对路径
- 打开文件资源管理器,确认
直接在CMake命令中传递参数:如果插件配置不生效,可直接修改CMake命令,添加路径参数:
"C:\Program Files\CMake\bin\cmake.EXE" --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=C:\msys64\ucrt64\bin\gcc.exe -DCMAKE_CXX_COMPILER:FILEPATH=C:\msys64\ucrt64\bin\g++.exe -DEigen3_DIR=C:/msys64/ucrt64/share/eigen3/cmake -SG:/Documents/Projects/GraphicsEngine -Bg:/Documents/Projects/GraphicsEngine/build -G "MinGW Makefiles"
- 升级最低CMake版本:当前指定的CMake最低版本3.0对现代包配置支持有限,建议修改为3.15+:
cmake_minimum_required (VERSION 3.15)
内容的提问来源于stack exchange,提问作者Carlos

