cmake MSYS Makefiles generator missing

2019-06-18 01:10发布

I have cmake 3.2.3 installed via pacman. I get an error when I try to use it from a msys64 shell:

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

cmake --help does not list it as an available generator.

I do see there is an MSYS.cmake in /usr/share/cmake-3.2.3/Modules/Platform.

What am I missing?

标签: cmake msys
4条回答
可以哭但决不认输i
2楼-- · 2019-06-18 01:31

Instead of installing the cmake package, I think you need to install mingw-w64-i686-cmake (or the 64-bit version mingw-w64-x86_64-cmake).

查看更多
做个烂人
3楼-- · 2019-06-18 01:31

I got the exact same message when trying to run cmake in the MSYS shell. Use a MinGW Shell (for instance MinGW-w64 Win64 Shell) instead.

查看更多
走好不送
4楼-- · 2019-06-18 01:41

If you compile native Windows binaries on Linux with MinGW

The MinGW and MSYS generators are only available on Windows based distributions. See #ifdef in cmake.cxx:

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

If you're cross-compiling use one of the available MinGW toolchains. See e.g. "How to use MinGW to cross compile software for Windows" chapter in CMake's wiki.

If you compile Windows binaries on Windows with MinGW

On my Windows PC I only have one CMake installation (the normal MSI Windows Installer with CMake directory added to PATH environment), which works from standard CMD shells and from my MSYS shells.

So in this case there is no need to install a special MinGW version of CMake (like e.g. for CygWin).

But I've rebuild CMake from source with MinGW-w64 several times lately to test some performance optimizations of cmake.exe and it did not work out-of-the-box. To work around the linker errors I've added -DCMAKE_EXE_LINKER_FLAGS="-Wl,--allow-multiple-definition" like recommended here and the resulting cmake.exe still supports the "MSYS Makefiles" generator.

So yes, there is - as you have commented - most probably something wrong with the pacman build.

查看更多
smile是对你的礼貌
5楼-- · 2019-06-18 01:41

I guess the pacman build is just broken, so I've resolved this issue by installing the Windows version of CMake from cmake.org with the msi installer.

查看更多
登录 后发表回答