Windows 上的 CMake 和 MinGW 编译,不需要 -G "MinGW Makefiles" 标志

新手上路,请多包涵

我想使用 CMake 和 MinGW 从 Windows PowerShell 命令行构建我的 C++ 应用程序。

当我使用以下命令以“正常方式”执行此操作时:

 mkdir build
cd build
cmake ..
make

CMake 选择 Visual Studio 作为默认编译器,并且不会为我生成任何 Makefile。

我希望 CMake 使用 MinGW 作为默认编译器,并生成 Makefile。 当我运行这些命令时,它完全按照我想要的方式工作,添加 -G “MinGW Makefiles” 标志:

 mkdir build
cd build
cmake .. -G "MinGW Makefiles"
make

如何在不添加 -G “MinGW Makefiles” 标志的情况下让 CMake 一直以这种方式运行?

我尝试在 Windows 中设置 CMAKE_GENERATOR 环境变量,并将其指向“ path\to\mingw\bin ”、“ path\to\mingw\bin\mingw32-make.exe ”,以及读取的字符串“ MinGW Makefile ”。

在运行 refreshenv 然后尝试再次运行 cmake .. 之后,这些都对我不起作用。

有人知道这是否是用于指定 CMake 的默认行为的正确环境变量吗?如果是,我应该使用什么值?

原文由 Soren Richenberg 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

我知道这已经晚了。 但万一有人来到这里发现这个答案很有用

你所要做的就是创建一个 function 像这样的东西:

 function gcmake {cmake .. -G "MinGW Makefiles"}

那么你可以简单地输入

mkdir build
cd build
gcmake ..
make

提示:您可以将此功能添加到您的个人资料中,以便将其保存到任何新会话中。你可以按照这个不错的 指南

原文由 mody 发布,翻译遵循 CC BY-SA 4.0 许可协议

如何在不添加 -G “MinGW Makefiles” 标志的情况下让 CMake 一直以这种方式运行?

你不能,在迄今为止发布的任何 CMake 版本中都不能。 CMake 在开始评估任何 CMakeLists.txt 文件之前选择一个生成器。默认情况下,它会根据运行时平台和可用工具集选择生成器,命令行选项是目前影响或覆盖 CMake 生成器选择的唯一方法。

在评论中,@Tsyvarev 指出了 一个开放的 CMake 问题报告,要求提供与您要求的功能相同的功能。相关评论线程提供了更多详细信息,最后一条评论是今年早些时候。我猜想最终 CMake 将添加对通过环境变量指定生成器的支持,但目前,您的 -G 选项是唯一可用的选择。如果您想节省击键并降低拼写错误的风险,您可以考虑编写脚本。

原文由 John Bollinger 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题