如何在Windows上配置VS Code的CMake Tools扩展,以使用GCC和MSYS Makefiles?

7
这个问题是关于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中设置这些变量和作为系统环境变量。

正确的方法是什么?


3
CMAKE_MAKE_PROGRAM是一个CMake变量,而不是环境变量之一(该变量未列在CMake影响环境变量的变量列表中)。因此,要设置此变量,您需要使用"cmake.configureSettings"而不是"cmake.environment"。 - Tsyvarev
1
@Tsyvarev 就是这样。谢谢。我对环境和CMake变量感到困惑。不过你为什么不把它发布为答案呢? - Neonit
2个回答

2

我知道这是一个旧的请求,但我最近一直在遭受这个问题的困扰。

我找到的技巧(适用于Windows上的当前版本MSYS2),是安装mingw64的cmake版本。

使用以下命令:

pacman -S mingw-w64-x86_64-cmake

注意:此假设pacman已定义在您的路径中,否则您需要在pacman前加上路径。

然后安装Ninja:

pacman -S ninja

您不需要在VSCode设置中定义配置,它应该可以直接工作。

1
从@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;${env:PATH}"
  },
  "cmake.generator": "MSYS Makefiles",
  [...]
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接