- Installing the MinGW-w64 toolchain
- CMake Tools
- makelist.txt
- 报错 1
- 报错 2
- 报错 3
- 生成了 Makefile ,如何使用 make 命令
Installing the MinGW-w64 toolchain
参见文档 将 GCC 与 MinGW 结合使用
CMake Tools
参见文档 Linux 上的 CMake 工具入门
CMake 的使用
makelist.txt
报错 1
PS C:\Users\Admin\Downloads\...> cmake ./
CMake Error in CMakeLists.txt:Running'nmake' '-?'failed with:no such file or directoryCMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
- 在
CMakeLists.txt
文件中设置的CMAKE_C_COMPILER
和CMAKE_CXX_COMPILER
变量是用来指定 C 和 C++ 编译器的路径的,它们不是用来指定生成器的。 - 可以通过这些变量来告诉 C M a k e CMake CMake 要使用的编译器,但是 C M a k e CMake CMake 仍然需要一个生成器来生成相应的构建系统。
这个报错的原因是,在 CMakeLists.txt
文件中没有指定 C M a k e CMake CMake 的生成器( g e n e r a t o r generator generator),而 C M a k e CMake CMake 默认使用了 N M a k e M a k e f i l e s NMake\ Makefiles NMake Makefiles 作为生成器。但是,你的系统中没有安装 n m a k e nmake nmake 工具,所以 C M a k e CMake CMake 无法找到它,导致报错。
要解决这个报错,可以在运行 C M a k e CMake CMake 时,使用 -G
选项来指定一个可用的生成器,例如 M i n G W M a k e f i l e s MinGW\ Makefiles MinGW Makefiles 或 V i s u a l S t u d i o Visual Studio VisualStudio。要确保系统中已经安装了相应的工具,例如 M i n G W MinGW MinGW 或 M S V C MSVC MSVC。
例如,可以在命令行中输入以下命令来使用 M i n G W M a k e f i l e s MinGW\ Makefiles MinGW Makefiles 作为生成器:
cmake -G "MinGW Makefiles" ./
运行 C M a k e CMake CMake 时,.
是当前文件夹,即源代码目录。应该指定包含 CMakeLists.txt
文件的目录。
报错 2
PS C:\Users\Admin\Downloads\....> 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.
这个报错的原因是,在运行 C M a k e CMake CMake 时,指定了不同的生成器( g e n e r a t o r generator generator),而 C M a k e CMake CMake 会缓存之前使用的生成器的信息。如果想更换生成器,需要删除之前生成的文件,或者选择一个不同的构建目录。
要解决这个报错,可以按照以下的步骤操作:
- 首先,需要在构建目录中删除
CMakeCache.txt
文件和CMakeFiles
文件夹,这些文件是 C M a k e CMake CMake 生成的缓存文件,包含了之前使用的生成器的信息。 - 其次,需要重新运行 C M a k e CMake CMake 命令,使用
-G
选项来指定想要使用的生成器,例如 M i n G W M a k e f i l e s MinGW\ Makefiles MinGW Makefiles 或 V i s u a l S t u d i o Visual Studio VisualStudio。 - 然后,需要使用相应的构建工具,例如 m i n g w 32 − m a k e mingw32-make mingw32−make 或 m s b u i l d msbuild msbuild,来编译和运行项目。
报错 3
PS C:\Users\Admin\Downloads\...> cmake -G "MinGW Makefiles" ./
-- The C compiler identification is GNU 13.1.0
CMake Error at CMakeFiles/3.28.1/CMakeCCompiler.cmake:1 (set):Syntax error in cmake code atC:/Users/Admin/Downloads/.../CMakeFiles/3.28.1/CMakeCCompiler.cmake:1when parsing stringC:\msys64\ucrt64\bin\gcc.exeInvalid character escape '\m'.
Call Stack (most recent call first):CMakeLists.txt:9 (project)-- Configuring incomplete, errors occurred!
这个报错的原因是,在 CMakeFiles/3.28.1/CMakeCCompiler.cmake
文件中使用了反斜杠来表示路径,而反斜杠在 C M a k e CMake CMake 中是一个转义字符,表示特殊的含义。例如,\m
表示换页符,而不是字母 m m m。
要解决这个报错,可以在 CMakeFiles/3.28.1/CMakeCCompiler.cmake
文件中,将反斜杠替换为正斜杠 /
,这样 C M a k e CMake CMake 就不会将它们解释为转义字符。
例如,可以将 CMakeFiles/3.28.1/CMakeCCompiler.cmake
文件中的第一行:
set(CMAKE_C_COMPILER "C:\\msys64\\ucrt64\\bin\\gcc.exe")
修改为:
set(CMAKE_C_COMPILER "C:/msys64/ucrt64/bin/gcc.exe")
修改完后,需要重新运行 C M a k e CMake CMake 命令,就可以看到报错消失了,这表示你的设置已经生效了。
生成了 Makefile ,如何使用 make 命令
现在的问题是已经生成了 Makefile
,在 windows 中 如何使用 m a k e make make 命令。
PS C:\Users\Admin\Downloads\ADBS> make
make : 无法将“make”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ make -h
+ ~~~~+ CategoryInfo : ObjectNotFound: (make:String) [], CommandNotFoundException+ FullyQualifiedErrorId : CommandNotFoundException
找到 mingw32-make.exe
文件,
mingw32-make.exe
复制一份,副本命名为 make.exe
,原来的不要删。
成功运行,如下: