这个问题是关于 VS Code 的 CMake Tools 扩展。操作系统是Windows 10。
扩展正确找到了 GCC,我可以通过查看
%LocalAppData%/CMakeTools/cmake-tools-kits.json
来验证。
{
"name": "GCC 10.3.0 x86_64-w64-mingw32",
"compilers": {
"C": "C:\\msys64\\mingw64\\bin\\x86_64-w64-mingw32-gcc.exe",
"CXX": "C:\\msys64\\mingw64\\bin\\x86_64-w64-mingw32-g++.exe"
}
}
我尝试通过相应的 VS Code 命令进行配置并收到错误:
[rollbar] Unhandled exception: Unhandled Promise rejection: configure Error: No usable generator found. {}
然后我将相应的设置添加到我的本地设置中
.vscode/settings.json
。
{ "cmake.generator": "MSYS Makefiles" }
我得到以下输出:
[proc] Executing command: "C:/Program Files/CMake/bin/cmake.exe" --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=C:\msys64\mingw64\bin\x86_64-w64-mingw32-gcc.exe -DCMAKE_CXX_COMPILER:FILEPATH=C:\msys64\mingw64\bin\x86_64-w64-mingw32-g++.exe -H<path to project root> -B<path to build directory> -G "MSYS Makefiles"
[cmake] Not searching for unused variables given on the command line.
[cmake] CMake Error: CMake was unable to find a build program corresponding to "MSYS Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
[cmake] CMake Error: CMake was unable to find a build program corresponding to "MSYS Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
[cmake] CMake Error: CMAKE_AR was not found, please set to archive program.
[cmake] -- Configuring incomplete, errors occurred!
所以我扩展了我的本地设置。
{
"cmake.generator": "MSYS Makefiles",
"cmake.environment": {
"CMAKE_AR": "C:/msys64/usr/bin/ar.exe",
"CMAKE_MAKE_PROGRAM": "C:/msys64/usr/bin/make.exe"
}
}
得到与之前相同的输出。我还尝试在
CMakeLists.txt
中设置这些变量并作为系统环境变量。
执行此操作的正确方法是什么?
我知道这是一个旧请求,但我最近一直受到这个问题的困扰。
我发现的技巧(使用 Windows 上当前版本的 MSYS2)是安装 mingw64 的 cmake 版本。
使用命令:
pacman -S mingw-w64-x86_64-cmake
注意:这假设 pacman 已在您的路径中定义,否则您需要在 pacman 前添加路径前缀。
然后安装Ninja:
pacman -S ninja
您不需要在 VSCode 设置中定义配置,它应该可以正常工作。
通过@Tsyvarev 的命令,我能够解决我的设置的类似问题,所以我不妨为下一个人发布答案。
我使用UCRT64环境而不是MINGW64,因为这是推荐的MSYS2环境。对于OP的问题,将
ucrt64
更改为mingw64
。
某些程序(适用于 Windows 的 git)可能会提供 MINGW64 二进制文件。如果遇到问题,请尝试设置
PATH
变量以排除这些目录。
如果 CMake 找不到某些标准库(例如 openblas),请尝试设置 CMAKE_PREFIX_PATH
。
我的最终
settings.json
看起来像这样:
{
"cmake.cmakePath": "C:/msys64/ucrt64/bin/cmake.exe",
"cmake.configureSettings": {
"CMAKE_AR": "C:/msys64/ucrt64/bin/ar.exe",
"CMAKE_MAKE_PROGRAM": "C:/msys64/usr/bin/make.exe",
"CMAKE_PREFIX_PATH": "C:/msys64/ucrt64"
},
"cmake.environment": {
"PATH": "C:\\msys64\\ucrt64\\bin;C:\\msys64\\usr\\bin;"
},
"cmake.generator": "MSYS Makefiles",
[...]
}