在Windows下使用通过MSYS2安装的cmake 3.5.2时,“MinGW Makefiles”生成器丢失。

3

我正在尝试在Windows下使用MinGW作为编译器来进行cmake的hello world测试。 这个答案建议使用以下命令行参数来运行cmake-G

 cmake -G "MinGW Makefiles" .

然而,如果我这样做,会收到一条消息说那不是一个已知的生成器。实际上,在运行“cmake --help”时,在“Generators”部分下列出了以下生成器:enter image description here 如您所见,“MinGW Makefiles”未列出。如果相关的话,我已经在我的系统中安装并使用了通常的文件夹C:\MinGW中的MinGW。我还通过WinBuilds和MSYS2安装了MinGW-w64,同样在默认的安装文件夹中。我正在使用安装在MSYS2中的“cmake version 3.5.2”。为什么“MinGW Makefiles”没有列在生成器中呢?
1个回答

6

谢谢,现在我明白了。我尝试使用那个标志的原因是,如果不使用该标志,cmake无法识别我在CMakeLists.txt文件中指定的mingw64 gcc编译器(通过MSYS2获取),从而导致另一个错误。我可以使用官方网站获得的“cmake”构建makefiles吗?即使我想使用MSYS2提供的其他工具? - glS
@glS 你是否也像我提供的第一个参考所示一样通过 pacman 安装了 CMake?是的,我只是下载并安装了官方的Windows CMake版本,从 MSYS 中调用 cmake ,目前还没有遇到任何问题。有关您的 CMake/MinGW/MSYS 安装的基本健全性检查,请参见此处。而且,我承认我不理解您在 CMakeLists.txt 文件中指定 GCC 编译器的评论。听起来像是您不应该这样做的事情。您能否将该脚本部分添加到您的问题中? - Florian
是的,我通过MSYS shell提供的pacman安装了它。我安装了官方的Windows版本的cmake,现在它可以在你在链接答案中提供的最简单的VS示例中工作了。这绝对是一个进步,我现在会尝试让它使用通过MSYS安装的mingw。再次感谢! - glS
1
很抱歉再次打扰您。如果您遇到了同样的问题,是否有任何可绕过PATH中存在sh.exe并使用"MinGW Makefiles"作为生成器的方法呢?因为我在PATH中有一个由Git分发提供的sh.exe,我希望尽可能保留它。您是否知道任何简单的解决方案吗? - glS
@glS 你是否按照这里所述运行了MSYS后安装步骤?这将设置MinGW的路径,然后CMake可以检测到正确的编译器(无需在CMakeLists.txt中列出它们)。您收到的错误消息是:“在您的PATH中找到了sh.exe,位置在:...为了使MinGW make正常工作,sh.exe不应该在您的路径中。...如果您想使用UNIX shell,则使用MSYS Makefiles。”因此,为了避免与另一个GNU工具链(而不是另一个sh.exe)发生冲突,请使用“MSYS Makefiles”(这就是我所做的)。 - Florian
抱歉,我的意思是我正在使用MSYS2。那里的说明似乎是关于旧版本的MSYS,我是对的吗?我尝试使用MinGW makefiles的原因是,在MSYS CMake doc page中说它们与Windows命令提示符不兼容,这意味着我会在使用通常用的powershell时遇到麻烦。或者那是指其他事情,我可以安全地使用MSYS和PS吗? - glS

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