私はCmakeでロープの端に到達しました。非常に多くの可能性を秘めていますが、機能するために基本的なシステムツール(つまり「make」)を見つけさせることはできません。
CmakeおよびCmake GUIは、以下を生成します(CMakeCache.txtファイルを削除した後):
Processing top-level CMakelists.txt for project swb
CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles".
CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
私はこの質問で「make」を見つけることに焦点を当てていますが、CMakeがライブラリやその他のユーティリティファイル(リンカー、nm、arなど)を見つけられないという多くの問題を抱えています。以下にリストする手法により、Linuxで実行しているときにCMakeがこれらのファイルを見つけることができるようです。
Windows 7(64ビット); MinGWの複数バージョン(32ビット/ 64ビット); Cmake 2.8.4; MinGWのNONSTANDARDインストール場所(c:/ MinGW-32)。
CMakelists.txtには、ファイルの最初の10行に「SET(CMAKE_MAKE_PROGRAM c:/MinGW-32/bin/make.exe FORCE)」が含まれています。
CMakelists.txtの以前のバージョンには以下が含まれていました。
find_program(CMAKE_MAKE_PROGRAM
NAMES make
make.exe
DOC "Find a suitable make program for building under Windows/MinGW"
HINTS c:/MinGW-32/bin )
CMakeまたはCMake-GUIを実行する前に、cmd.exe環境変数でCMAKE_MAKE_PROGRAMを設定します。
CMAKE_MAKE_PROGRAMおよびCMAKE_C_COMPILERなどを識別する「ツールチェーン」ファイルの使用.
GUIを使用してCMAKE_MAKE_PROGRAM変数(「C:/MinGW-32/bin/make.exe」)を設定すると、CMakeはビルドファイルを正常に作成します。
GUIを使用してmakeプログラムの名前を特定すると、CMakeを動作させることができます。 Windows 7(64ビット)/ MinGWの組み合わせでユーザーの介入なしにCMakeがmakeプログラムを検出できるようにする方法
私は2つの提案があります:
%PATH%環境変数にmakeがありますか?私のシステムでは、%MINGW_DIR%\ binを%PATH%に追加する必要があります。
Makeはインストールされていますか? mingwのインストールに応じて、個別のパッケージにすることができます。
最終手段:コマンドラインで作成する完全なパスを渡すことができますか? cmake -D"CMAKE_MAKE_PROGRAM:PATH=C:/MinGW-32/bin/make.exe" ..\Source
GUIで、「詳細」チェックボックスを選択します。これで、いくつかのエントリが下に表示されます。 mingw32-make.exeファイルの名前をmake.exeに変更し(コピーを作成するだけです)、CMAKE_MAKE_PROGRAMファイルパス変数をそのファイルの場所に設定します。
同じ問題を解決しました。 GCCとG ++をインストールしたMinGWをインストールしましたが、Make自体はインストールしていません。だからこのコマンドは私を助けました:
mingw-get.exe install mingw32-make
次に、CMakeキャッシュをクリアします(CMakeCache.txt
をCMakeの作業ディレクトリに追加し、CMakeを再度実行します。
不足しているパッケージをインストールしようとしました。私の場合、ツールチェーンをインストールしてCLionを再起動するとすべて解決しました:
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-extra-cmake-modules
pacman -S mingw-w64-x86_64-make
pacman -S mingw-w64-x86_64-gdb
pacman -S mingw-w64-x86_64-toolchain
以前の回答では、CMakeの(再)インストールまたは構成が提案されましたが、それらはすべて役に立ちませんでした。
以前のMakeのMinGWのコンパイルでは、ファイル名mingw32-make.exe
そして今ではmake.exe
。他のファイルを使用するようにCMakeを構成する最も推奨される方法は機能しません。
コピーmake.exe
とコピーの名前を変更mingw32-make.exe
。
最近、私は同じ問題を抱えていました(WIN764でCMakeとQt/MinGWを使用してOpenCVをコンパイルする)
そして、環境変数PATHを含むこれを解決すると思う(Control Panel\All Control Panel Items\System\Advanced Sytem Settings
)%MINGW_DIR%\ binおよび%CMAKE_DIR%/ bin
さらに、簡単なディレクトリにcmake2.8をインストールしました(空白はなし)
Qt Creator(MinGW)でOpenCVをコンパイルして。a静的ライブラリファイルをビルドしようとしたときに、まったく同じ問題が発生しました。
Windows 32ビットのQt 5.2.1(MinGW 4.8、OpenGL、634 MB) をインストールした場合、システムの環境変数Path
に以下を追加すると、この問題を修正できます。 :
C:\Qt\Qt5.2.0\Tools\mingw48_32\bin
同じ問題が発生し、ツールチェーンファイルでCMAKE_MAKE_PROGRAMを指定しましたが、cmakeで見つかりませんでした。次に、コマンドラインに-D CMAKE_MAKE_PROGRAM = ...を追加してみましたが、動作しました。次に、ジェネレーターを「MinGW Makefiles」から「Unix Makefiles」に変更して、コマンドラインから-D CMAKE_MAKE_PROGRAMを削除しましたが、その後も機能しました。
そのため、ジェネレーターが「MinGW Makefiles」に設定されている何らかの理由で、ツールチェーンファイルのCMAKE_MAKE_PROGRAM設定は有効ではありませんが、「Unix Makefiles」ジェネレーターでは有効です。
同じ問題がありました。 http://tdm-gcc.tdragon.net/ で提供されるインストーラーを使用してmingwをインストールしました。 mingwをインストールするときに、パスに正しい環境変数を追加します(パス変数を手動で編集する必要はありません)。それは私のためのトリックをしました。
まあ、それが有用である場合、私はこの問題を含め、cmakeでいくつかの問題を抱えています。それらはすべて、システムのグローバル変数(私の場合はMinGWコードブロック)PATHを修正すると消えました。コードブロックのインストールがデフォルトではなく、何らかの理由で、このグローバル変数が正しい場所を指していません。 CodeblocksまたはMinGWのパスが正しいかどうかを確認します。
[マイコンピュータ]> [プロパティ]> [詳細プロパティ]または[詳細]> [環境変数]を右クリックして、PATH変数を変更します
それは私のために働いた;)
私は次を使用して解決される同じ問題を抱えていました:
すべてのフォルダーの名前を8文字を超えないようにして、スペースを入れないようにしてください。
これを修正するには、Windowsのパスに次の行を追加する必要がありました。それ以外の場合、ボックスをチェックする限り、CMAKEはインストール時に正しいパスを設定する必要があります。これは、インストール可能な無数のバージョンに応じて異なるソリューションになる可能性があります。
C:\msys64\mingw32\bin
C:\msys64\mingw64\bin
また、(tdm-gccスイートで)mingw32でopencv2.3.2をコンパイルしたいときにも発生します。多くの場合、tdm-gccをインストールするときに、mingw32-make.exeの名前をmake.exeに変更します。そして、これが問題になると思います。 cmakeがMinGW Makefileを生成するように求められた場合、make.exeではなくming32-make.exeを見つけようとします。そこで、make.exeをmingw32-make.exeにコピーし、Cmake-guiで再構成します。最後に動作します!したがって、この質問を解決するためにmingw32-make.exeがあるかどうかを確認することをお勧めします。
Ubuntuでは、コンパイラが欠けていたと思います。修正済み:
Sudo apt install build-essential
誰もが異なる解決策を持っているようです。私のような私の問題を解決しました:
64ビットmingwをインストールすると、「C:\ Program Files\mingw-w64\x86_64-5.1.0-posix-seh-rt_v4-rev0\mingw64\bin」にインストールされます。
Eventhough mingw-make.exeは上記のパスの下にあり、1つの無効な文字または長いパス名がCMakeを混乱させました。環境パスにパスを追加しようとしていますが、CMAKEがパラメーターとして機能しなかったため、CMAKEに指定しようとしました。
最後に、mingw-w64の複雑なパスを「C:/ mingw64」に移動し、環境パスを設定してからCMakeを再起動しました。問題は解決しました。
CMakeを使用して、mingwを使用してWindows上でGammaRay for Qtを構築しようとしました。そこで、Qtをインストールしました。そして、私はここで他のユーザーと同じ問題を抱えていました。
私のために働いたアプローチは、Qtビルドプロンプトからcmake-guiを起動することです(「スタートメニュー\すべてのプログラム\ Qt {QT_VERSION}」フォルダにQtインストーラによって作成されたショートカット)。