找不到CMAKE_MAKE_PROGRAM

时间:2011-05-26 16:07:14

标签: makefile cmake mingw

我已经用Cmake结束了我的绳索;它有很大的潜力,但我似乎无法让它找到基本的系统工具(即“制造”)才能发挥作用。

症状

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等)。我在下面列出的技术似乎使CMake能够在Linux下运行时找到这些文件。

SYSTEM

Windows 7(64位); MinGW的多个版本(32位/ 64位); Cmake 2.8.4; NONSTANDARD为MinGW安装位置(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等的“工具链”文件

  5. 已经工作的一件事

    CMake将成功创建构建文件如果我使用GUI填充CMAKE_MAKE_PROGRAM变量(“C:/MinGW-32/bin/make.exe”)。

    问题(S)

    如果我通过GUI识别make程序的名称,我可以让CMake工作。 如何在没有用户干预Windows 7(64位)/ MinGW组合的情况下让CMake找到我的make程序?

16 个答案:

答案 0 :(得分:29)

我有两点建议:

  1. 您的%PATH%环境变量中是否有make?在我的系统上,我需要将%MINGW_DIR%\ bin添加到%PATH%。

  2. 你有安装吗?根据您的mingw安装,它可以是一个单独的包。

  3. 最后的手段:你能否在命令行上传递完整的路径? cmake -D"CMAKE_MAKE_PROGRAM:PATH=C:/MinGW-32/bin/make.exe" ..\Source

答案 1 :(得分:20)

在GUI中,选择“高级”复选框。它现在应该在下面显示几个条目。将mingw32-make.exe文件重命名为make.exe(您只需制作副本)并将CMAKE_MAKE_PROGRAM文件路径变量设置为所述文件的位置。

答案 2 :(得分:11)

刚刚解决了同样的问题。我安装了GCC和G ++的MinGW但不是Make本身。所以这个命令帮助了我:

mingw-get.exe install mingw32-make

然后清除CMake缓存(CMake工作目录中的CMakeCache.txt)并再次运行CMake。

答案 3 :(得分:5)

以前的答案建议(重新)安装或配置CMake,它们都没有帮助。

以前MinGW的Make编译使用了文件名mingw32-make.exe,现在它是make.exe。大多数建议的方法来配置CMake以使用其他文件不起作用。

只需复制make.exe并重命名副本mingw32-make.exe

答案 4 :(得分:3)

最近我遇到了同样的问题(在WIN764上使用CMake和Qt / MinGW编译OpenCV)

我认为我解决了这个问题,包括我的环境变量PATH(通过Control Panel\All Control Panel Items\System\Advanced Sytem Settings)和%MINGW_DIR%\ bin和%CMAKE_DIR%/ bin

此外,我在一个简单的目录上安装了cmake2.8(没有空白)

答案 5 :(得分:3)

当我尝试使用Qt Creator(MinGW)编译OpenCV来构建 .a 静态库文件时,我遇到了完全相同的问题。

对于安装Qt 5.2.1 for Windows 32-bit (MinGW 4.8, OpenGL, 634 MB)的用户,如果将以下内容添加到系统的环境变量Path中,则可以解决此问题:

C:\Qt\Qt5.2.0\Tools\mingw48_32\bin

答案 6 :(得分:3)

我试图安装丢失的软件包。在我的情况下,安装工具链并重新启动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

答案 7 :(得分:1)

我遇到了同样的问题。 使用http://tdm-gcc.tdragon.net/提供的安装程序安装mingw。它在安装mingw时为路径添加了正确的环境变量(无需手动编辑路径变量)。 这对我有用。

答案 8 :(得分:1)

好吧,如果它有用,我在cmake上遇到了一些问题,包括这个问题。当我修复系统中的全局变量(在我的情况下是MinGW Codeblocks)PATH时,它们都消失了。如果codeblocks install不是默认的,并且由于某些未知原因,此全局变量不指向正确的位置。检查Codeblocks或MinGW的路径是否正确:

右键点击“我的电脑”>性状>高级属性或高级>环境变量>更改PATH变量

它对我有用;)

答案 9 :(得分:1)

我遇到了同样的问题,并在工具链文件中指定了CMAKE_MAKE_PROGRAM,cmake没有找到它。然后我尝试在命令行中添加-D CMAKE_MAKE_PROGRAM = ...然后它工作了。然后我尝试从" MinGW Makefiles"更换发电机。到" Unix Makefiles"并从命令行中删除了-D CMAKE_MAKE_PROGRAM,然后它也工作了!

因此,出于某种原因,将发电机设置为" MinGW Makefiles"然后工具链文件中的CMAKE_MAKE_PROGRAM设置无效,但对于" Unix Makefiles"它就是发电机。

答案 10 :(得分:0)

我有同样的问题,使用以下方法解决:

尝试将所有文​​件夹重命名为不超过8个字符且不含空格。

答案 11 :(得分:0)

当我只想用mingw32(在tdm-gcc套件中)编译opencv2.3.2时,也会发生这种情况。通常当我安装tdm-gcc时,我想将mingw32-make.exe重命名为make.exe。我认为这可能是个问题。如果要求cmake生成MinGW Makefile,它会尝试查找ming32-make.exe而不是make.exe。所以我将make.exe复制到mingw32-make.exe并在Cmake-gui中重新配置。最后它有效!所以我想建议是否 你有没有mingw32-make.exe来解决这个问题。

答案 12 :(得分:0)

我尝试使用CMake在Windows上使用mingw为Qt构建GammaRay。所以,我安装了Qt。我和其他用户遇到了同样的问题。

对我有用的方法是从Qt构建提示(Qt安装程序在"开始菜单\所有程序\ Qt {QT_VERSION}"文件夹中创建的快捷方式)启动cmake-gui。

答案 13 :(得分:0)

似乎每个人都有不同的解决方案。我解决了我的问题:

当我安装64位mingw时,它将自己安装到:“C:\ Program Files \ mingw-w64 \ x86_64-5.1.0-posix-seh-rt_v4-rev0 \ mingw64 \ bin”

尽管mingw-make.exe在上面的路径下,但是一个无效的charecter或长路径名称混淆了CMake。我尝试添加路径到环境路径,尝试给CMAKE作为参数,它不适合我。

最后我将mingw-w64的复杂路径移动到“C:/ mingw64”,而不是设置环境路径,重新启动CMake。问题解决了我。

答案 14 :(得分:0)

我必须在Windows路径中添加以下行以解决此问题。 CMAKE应该在安装时设置正确的路径,否则,只要您选中此框即可。根据可能安装的多种版本,这可能是一种不同的解决方案。

C:\msys64\mingw32\bin
C:\msys64\mingw64\bin

答案 15 :(得分:0)

在ubuntu上,我认为我缺少编译器。固定为:

sudo apt install build-essential