web-dev-qa-db-ja.com

CMAKE_MAKE_PROGRAMが見つかりません

私は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)。

試したこと

  1. CMakelists.txtには、ファイルの最初の10行に「SET(CMAKE_MAKE_PROGRAM c:/MinGW-32/bin/make.exe FORCE)」が含まれています。

  2. 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 )  
    
  3. CMakeまたはCMake-GUIを実行する前に、cmd.exe環境変数でCMAKE_MAKE_PROGRAMを設定します。

  4. 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プログラムを検出できるようにする方法

56
westie314

私は2つの提案があります:

  1. %PATH%環境変数にmakeがありますか?私のシステムでは、%MINGW_DIR%\ binを%PATH%に追加する必要があります。

  2. Makeはインストールされていますか? mingwのインストールに応じて、個別のパッケージにすることができます。

  3. 最終手段:コマンドラインで作成する完全なパスを渡すことができますか? cmake -D"CMAKE_MAKE_PROGRAM:PATH=C:/MinGW-32/bin/make.exe" ..\Source

29
André

GUIで、「詳細」チェックボックスを選択します。これで、いくつかのエントリが下に表示されます。 mingw32-make.exeファイルの名前をmake.exeに変更し(コピーを作成するだけです)、CMAKE_MAKE_PROGRAMファイルパス変数をそのファイルの場所に設定します。

21
CptAJ

同じ問題を解決しました。 GCCとG ++をインストールしたMinGWをインストールしましたが、Make自体はインストールしていません。だからこのコマンドは私を助けました:

mingw-get.exe install mingw32-make

次に、CMakeキャッシュをクリアします(CMakeCache.txtをCMakeの作業ディレクトリに追加し、CMakeを再度実行します。

11
Melebius

不足しているパッケージをインストールしようとしました。私の場合、ツールチェーンをインストールして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
5
Umut Uzun

以前の回答では、CMakeの(再)インストールまたは構成が提案されましたが、それらはすべて役に立ちませんでした。

以前のMakeのMinGWのコンパイルでは、ファイル名mingw32-make.exeそして今ではmake.exe。他のファイルを使用するようにCMakeを構成する最も推奨される方法は機能しません。

コピーmake.exeとコピーの名前を変更mingw32-make.exe

5
Bernd Elkemann

最近、私は同じ問題を抱えていました(WIN764でCMakeとQt/MinGWを使用してOpenCVをコンパイルする)

そして、環境変数PATHを含むこれを解決すると思う(Control Panel\All Control Panel Items\System\Advanced Sytem Settings)%MINGW_DIR%\ binおよび%CMAKE_DIR%/ bin

さらに、簡単なディレクトリにcmake2.8をインストールしました(空白はなし)

3
nank

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
3
karlphillip

同じ問題が発生し、ツールチェーンファイルでCMAKE_MAKE_PROGRAMを指定しましたが、cmakeで見つかりませんでした。次に、コマンドラインに-D CMAKE_MAKE_PROGRAM = ...を追加してみましたが、動作しました。次に、ジェネレーターを「MinGW Makefiles」から「Unix Makefiles」に変更して、コマンドラインから-D CMAKE_MAKE_PROGRAMを削除しましたが、その後も機能しました。

そのため、ジェネレーターが「MinGW Makefiles」に設定されている何らかの理由で、ツールチェーンファイルのCMAKE_MAKE_PROGRAM設定は有効ではありませんが、「Unix Makefiles」ジェネレーターでは有効です。

1
Bert Regelink

同じ問題がありました。 http://tdm-gcc.tdragon.net/ で提供されるインストーラーを使用してmingwをインストールしました。 mingwをインストールするときに、パスに正しい環境変数を追加します(パス変数を手動で編集する必要はありません)。それは私のためのトリックをしました。

1
Asitha

まあ、それが有用である場合、私はこの問題を含め、cmakeでいくつかの問題を抱えています。それらはすべて、システムのグローバル変数(私の場合はMinGWコードブロック)PATHを修正すると消えました。コードブロックのインストールがデフォルトではなく、何らかの理由で、このグローバル変数が正しい場所を指していません。 CodeblocksまたはMinGWのパスが正しいかどうかを確認します。

[マイコンピュータ]> [プロパティ]> [詳細プロパティ]または[詳細]> [環境変数]を右クリックして、PATH変数を変更します

それは私のために働いた;)

1
Eduardo Segura

私は次を使用して解決される同じ問題を抱えていました:

すべてのフォルダーの名前を8文字を超えないようにして、スペースを入れないようにしてください。

0
Hamid Baghernia

これを修正するには、Windowsのパスに次の行を追加する必要がありました。それ以外の場合、ボックスをチェックする限り、CMAKEはインストール時に正しいパスを設定する必要があります。これは、インストール可能な無数のバージョンに応じて異なるソリューションになる可能性があります。

C:\msys64\mingw32\bin
C:\msys64\mingw64\bin
0
ozzieisaacs

また、(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があるかどうかを確認することをお勧めします。

0
ZHU Xinzhao

Ubuntuでは、コンパイラが欠けていたと思います。修正済み:

Sudo apt install build-essential
0
ErichBSchulz

誰もが異なる解決策を持っているようです。私のような私の問題を解決しました:

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を再起動しました。問題は解決しました。

0

CMakeを使用して、mingwを使用してWindows上でGammaRay for Qtを構築しようとしました。そこで、Qtをインストールしました。そして、私はここで他のユーザーと同じ問題を抱えていました。

私のために働いたアプローチは、Qtビルドプロンプトからcmake-guiを起動することです(「スタートメニュー\すべてのプログラム\ Qt {QT_VERSION}」フォルダにQtインストーラによって作成されたショートカット)。

0