找不到CMAKE_MAKE_PROGRAM


72

我已经通过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等),我也遇到了许多相同的问题。我下面列出的技术似乎使CMake在Linux下运行时可以找到这些文件。

系统

Windows 7(64位);MinGW的多个版本(32位/ 64位);Cmake 2.8.4; MinGW的NONSTANDARD安装位置(c:/ MinGW-32)。

我尝试过的东西

  1. CMakelists.txt包含SET( CMAKE_MAKE_PROGRAM c:/MinGW-32/bin/make.exe FORCE )在文件的前10行中。

  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_MAKE_PROGRAM在运行CMake或CMake-GUI之前,请在cmd.exe环境变量中进行设置。

  4. 使用“工具链”文件来标识CMAKE_MAKE_PROGRAM以及CMAKE_C_COMPILER,等等。

一件有效的事

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

问题

如果通过GUI识别make程序的名称,则可以使CMake正常工作。如何使CMake无需用户干预Windows 7(64位)/ MinGW组合即可找到我的make程序?

Answers:


35

我有两个建议:

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

  2. 你已经安装了吗?根据您的mingw安装,它可以是单独的软件包。

  3. 不得已:您可以在命令行中通过完整路径吗? cmake -D"CMAKE_MAKE_PROGRAM:PATH=C:/MinGW-32/bin/make.exe" ..\Source


感谢您的建议!我的路径中已经有%MINGW_DIR%\ bin,并且make.exe肯定在%MINGW_DIR%\ bin目录中。还有其他想法吗?
westie314 2011年

@ westie314:是在你的道路上吗?如果打开命令行并键入“ make --version”,将显示什么?
Stephen Newell

5
CMake是否搜索“ make”或“ mingw32-make”?如果是后者,那也必须走这条路。
2012年

22

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


2
这应该被接受。它对我有用:检查“高级”,然后出现CMAKE_MAKE_PROGRAM变量。只需将NOT_FOUND_SOMETHING更改为C:/MinGW/bin/make.exe或任何其他路径即可。
smoothware

我的GUI没有任何设置显示CMAKE_MAKE_PROGRAM。有任何想法吗?
Schütze

您可以通过单击“添加条目”并按如下所示填写字段来手动创建条目:名称- CMAKE_MAKE_PROGRAM,类型- FILEPATH,值- X:/Path/To/Make。或从命令行添加-DCMAKE_MAKE_PROGRAM=X:/Path/To/Make。希望对您
有所

15

我已经解决了同样的问题。我安装了带有GCC和G ++的MinGW,但没有make。此命令对我有帮助:

mingw-get.exe install mingw32-make

运行它之后,清除CMake缓存(删除CMakeCache.txtCMake工作目录中的文件)并再次运行CMake。


2
在MinGW基本设置中,包括mingw32-base以获得make。
slackwing 2014年

5

先前的建议建议(重新)安装或配置CMake,但它们均无济于事。

MinGW以前的Make编译使用文件名,mingw32-make.exe而现在是make.exe。建议将CMake配置为使用其他文件的方法不起作用。

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


1
生命节省时间+1!
易卜拉欣·卡里米

5

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

这对于新版本的MinGW十分有效,而mingw32-make不再存在。
佐伊


3

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

而且我认为我可以通过Control Panel\All Control Panel Items\System\Advanced Sytem Settings%MINGW_DIR%\ bin和%CMAKE_DIR%/ bin在环境变量PATH中(通过)解决此问题

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



1

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


1

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

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

它对我有用;)


1

我遇到了同样的问题,并在工具链文件中指定了CMAKE_MAKE_PROGRAM,cmake找不到它。然后,我尝试在命令行中添加-D CMAKE_MAKE_PROGRAM = ...,然后它起作用了。然后,我尝试将生成器从“ MinGW Makefiles”更改为“ Unix Makefiles”,并从命令行中删除了-D CMAKE_MAKE_PROGRAM,然后它也起作用了!

因此,出于某种原因,当生成器设置为“ MinGW Makefiles”时,工具链文件中的CMAKE_MAKE_PROGRAM设置无效,但对于“ Unix Makefiles”生成器却有效。


似乎另外make.exe需要位于PATH环境变量中。
Bert Regelink

1

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

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

尽管mingw-make.exe在上面的路径下,但一个无效的字符或长路径名使CMake感到困惑。我尝试将路径添加到环境路径,尝试将CMAKE作为对我不起作用的参数。

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


0

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

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


0

当我只想使用mingw32编译opencv2.3.2(在tdm-gcc套件中)时,也会发生这种情况。通常,当我安装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来解决此问题。


0

我试图使用CMake在mingw上为Windows上的Qt构建GammaRay。因此,我安装了Qt。我和这里的其他用户有同样的问题。

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


0

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

C:\msys64\mingw32\bin
C:\msys64\mingw64\bin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.