VS Code 使用 Makefile 运行 CPP项目

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 directory


CMake 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_COMPILERCMAKE_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 mingw32make 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 at

    C:/Users/Admin/Downloads/.../CMakeFiles/3.28.1/CMakeCCompiler.cmake:1

  when parsing string

    C:\msys64\ucrt64\bin\gcc.exe

  Invalid 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,原来的不要删。

成功运行,如下:

在这里插入图片描述

  • 27
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一杯水果茶!

谢谢你的水果茶啦~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值