web-dev-qa-db-ja.com

cmake MSYSMakefilesジェネレーターがありません

Pacman経由でcmake3.2.3をインストールしました。 msys64シェルから使用しようとするとエラーが発生します。

$ 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があるのはわかります。

何が足りないのですか?

10
Scott Thibault

cmakeパッケージをインストールする代わりに、mingw-w64-i686-cmake(または64ビットバージョンmingw-w64-x86_64-cmake)をインストールする必要があると思います。

15
Evan

[〜#〜] msys [〜#〜]シェルでcmakeを実行しようとすると、まったく同じメッセージが表示されました。代わりにMinGW Shell(たとえば、MinGW-w64 Win64 Shell)を使用してください。

3
Duane

LinuxでMinGWを使用してネイティブWindowsバイナリをコンパイルする場合

MinGWおよびMSYSジェネレーターは、Windowsベースのディストリビューションでのみ使用できます。 cmake.cxx#ifdefを参照してください:

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

クロスコンパイルする場合は、利用可能なMinGWツールチェーンの1つを使用してください。たとえば、 "MinGWを使用してWindows用のソフトウェアをクロスコンパイルする方法" CMakeのwikiの章。

MinGWを使用してWindowsでWindowsバイナリをコンパイルする場合

私のWindowsPCには、標準のCMDシェルとMSYSシェルから動作するCMakeインストールが1つだけあります(CMakeディレクトリがPATH環境に追加された通常のMSI Windowsインストーラー)。

したがって、この場合、CMakeの特別なMinGWバージョン(CygWinなど)をインストールする必要はありません。

しかし、最近、MinGW-w64を使用してソースからCMakeを再構築し、cmake.exeのパフォーマンスの最適化をテストしましたが、そのままでは機能しませんでした。リンカエラーを回避するために、推奨されるように-DCMAKE_EXE_LINKER_FLAGS="-Wl,--allow-multiple-definition"を追加しました ここ そして結果のcmake.exeは引き続き「MSYSMakefiles」ジェネレーターをサポートします。

そうです、あなたがコメントしたように、おそらくpacmanビルドに何か問題があります。

3
Florian

Pacmanビルドが壊れていると思うので、msiインストーラーを使用してcmake.orgからWindowsバージョンのCMakeをインストールすることでこの問題を解決しました。

0
Scott Thibault