情况描述:VSCode以MinGW64作为C/C++编译器。cmake和MinGW64均已添加到系统变量。
一个简单项目test01的结构:

cd build 后cmake ..,报错:
CMake Error at CMakeLists.txt:4 (project):
Running
'nmake' '-?'
failed with:
no such file or directory
原因:CMake默认选择了NMake作为构建工具,但由于使用的是MinGW64而非MSVC编译器,导致了nmake无法找到相关的构建工具。
解决方案:运行cmake ..时,指定使用MinGW作为构建工具。
cmake .. -G "MinGW Makefiles"
运行此命令后可能会出现这样的问题:
CMake Error: Error: generator : MinGW Makefiles Does not match the generator used previously: NMake Makefiles Either remove the CMakeCache.txt file and CMakeFiles directory or choose a different binary directory.
这个错误表明CMake在同一个构建目录中已经使用过NMake Makefiles作为生成器,而你现在尝试使用MinGW Makefiles。由于CMake要求在同一构建目录下只能使用一个生成器,因此你需要清理之前的构建文件。
del CMakeCache.txt
rmdir /s /q CMakeFiles
或者更加简单粗暴一点直接删除整个build然后重新构建
rm -r build
这之后按第一个错误的解决方法cmake,重新生成Makefile文件。
此时直接在终端中make,可能出现如下报错:
make : 无法将“make”项识别为 cmdlet、函数、脚本文件或可运行
程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,
然后再试一次。
所在位置 行:1 字符: 1
+ make
+ CategoryInfo : ObjectNotFound: (make:String)
[], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
这是由于MinGW64中的make被称为mingw32-make。你在mingw64/bin路径下应该可以找到mingw32-make这个exe文件。
在终端中使用命令mingw32-make,编译成功。你在build文件夹中可以找到以项目名称命名的exe文件。
问题解决。