cmake MSYS Makefiles生成器丢失

时间:2016-05-21 16:19:31

标签: cmake msys

我通过pacman安装了cmake 3.2.3。当我尝试从msys64 shell使用它时出现错误:

$ cmake -G "MSYS Makefiles" ..
CMake Error: Could not create named generator MSYS Makefiles

cmake --help不会将其列为可用的生成器。

我确实在/usr/share/cmake-3.2.3/Modules/Platform中看到了一个MSYS.cmake。

我错过了什么?

4 个答案:

答案 0 :(得分:11)

我认为您需要安装cmake(或64位版本mingw-w64-i686-cmake),而不是安装mingw-w64-x86_64-cmake包。

答案 1 :(得分:3)

如果使用MinGW在Linux上编译本机Windows二进制文件

MinGWMSYS生成器仅适用于基于Windows的发行版。请参阅cmake.cxx中的#ifdef

#if defined(_WIN32) && !defined(__CYGWIN__)

如果您要进行交叉编译,请使用其中一个可用的MinGW工具链。参见例如CMake的wiki中的"How to use MinGW to cross compile software for Windows"章节。

如果使用MinGW在Windows上编译Windows二进制文件

在我的Windows PC上,我只有一个CMake安装(正常的MSI Windows Installer,其中CMake目录已添加到PATH环境中),它可以从标准CMD shell和我的MSYS shell中运行。

因此在这种情况下,不需要安装特殊的MinGW版本的CMake(例如用于CygWin)。

但我最近几次使用MinGW-w64从源代码重建了CMake,以测试cmake.exe的一些性能优化,但它并不是开箱即用的。为了解决链接器错误,我添加了-DCMAKE_EXE_LINKER_FLAGS="-Wl,--allow-multiple-definition",如推荐的here,结果cmake.exe仍然支持" MSYS Makefiles"发生器。

所以,是的,正如你所评论的那样 - 很可能是pacman版本出了问题。

答案 2 :(得分:1)

在尝试在 MSYS shell中运行cmake时,我得到了完全相同的消息。请改用 MinGW Shell (例如MinGW-w64 Win64 Shell)。

答案 3 :(得分:0)

我认为pacman版本刚刚破解,所以我通过使用msi安装程序从cmake.org安装Windows版本的CMake解决了这个问题。