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があるのはわかります。
何が足りないのですか?
cmake
パッケージをインストールする代わりに、mingw-w64-i686-cmake
(または64ビットバージョンmingw-w64-x86_64-cmake
)をインストールする必要があると思います。
[〜#〜] msys [〜#〜]シェルでcmakeを実行しようとすると、まったく同じメッセージが表示されました。代わりにMinGW Shell(たとえば、MinGW-w64 Win64 Shell)を使用してください。
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ビルドに何か問題があります。
Pacmanビルドが壊れていると思うので、msiインストーラーを使用してcmake.orgからWindowsバージョンのCMakeをインストールすることでこの問題を解決しました。