我通过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。
我错过了什么?
答案 0 :(得分:11)
我认为您需要安装cmake
(或64位版本mingw-w64-i686-cmake
),而不是安装mingw-w64-x86_64-cmake
包。
答案 1 :(得分:3)
如果使用MinGW在Linux上编译本机Windows二进制文件
MinGW
和MSYS
生成器仅适用于基于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解决了这个问题。