找不到CMAKE_MAKE_PROGRAM

我已经与Cmake的绳索到了尽头; 它有这么多的潜力,但我似乎无法find基本的系统工具(即“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. 

我正在关注在这个问题中find“make”,但是,我也遇到了许多与CMake无法find库和其他实用程序文件(链接器,nm,ar等)相同的问题。 下面列出的技术似乎使CMake能够在Linux下运行时find这些文件。

系统

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环境variables中设置CMAKE_MAKE_PROGRAM。

4)使用标识CMAKE_MAKE_PROGRAM以及CMAKE_C_COMPILER等的“工具链”文件

一切工作

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

问题(S)

如果我通过GUI识别make程序的名字,我可以让CMake工作。 如何让CMake无需Windows 7(64位)/ MinGW组合的用户干预即可find我的make程序?

我有两个build议:

  1. 你有%PATH%环境variables吗? 在我的系统上,我需要将%MINGW_DIR%\ bin添加到%PATH%。

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

  3. 最后的手段:你可以通过命令行完整的path吗? cmake -D"CMAKE_MAKE_PROGRAM:PATH=C:/MinGW-32/bin/make.exe" ..\Source

在GUI中,select“高级”checkbox。 它现在应该显示下面几个条目。 将您的mingw32-make.exe文件重命名为make.exe(您可以创build一个副本)并将CMAKE_MAKE_PROGRAM文件pathvariables设置为该文件的位置。

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

 mingw-get.exe install mingw32-make 

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

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

对于那些为Windows 32位安装Qt 5.2.1(MinGW 4.8,OpenGL,634 MB) ,如果将以下内容添加到系统的环境variablesPath ,则可以解决此问题:

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

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

我想我解决这个包括在我的环境variablesPATH(通过Control Panel\All Control Panel Items\System\Advanced Sytem Settings )%MINGW_DIR%\ bin和%CMAKE_DIR%/斌

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

以前的答案build议(重新)安装或configurationCMake,他们都没有帮助。

以前MinGW编译Make使用文件名mingw32-make.exe ,现在是make.exe 。 大多数build议的方法来configurationCMake使用其他文件不工作。

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

我试图安装缺less的软件包。 安装工具链并重新启动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 

我有同样的问题。 使用http://tdm-gcc.tdragon.net/中提供的安装程序安装mingw。; 它在安装mingw时将正确的环境variables添加到path中(不需要手动编辑pathvariables)。 这对我来说是诀窍。

那么,如果它是有用的,我有几个问题与cmake,包括这一个。 当我修复系统中的全局variables(在我的情况下是MinGW代码块)PATH时,它们都消失了。 当代码块安装不是默认情况下,由于一些不知道的原因,这个全局variables没有指向正确的地方。 检查Codeblocks或MinGW的path是否正确:

右键单击“我的电脑”>属性>高级属性或高级>环境variables>更改PATHvariables

它为我工作;)

我有同样的问题解决使用以下内容:

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

当我只想用mingw32编译opencv2.3.2时(在tdm-gcc套件中),也会发生这种情况。 通常当我安装tdm-gcc时,我想将mingw32-make.exe重命名为make.exe。 我认为这可能是个问题。 如果cmake被要求生成一个MinGW Makefiles,它会尝试findming32-make.exe而不是make.exe。 所以我把make.exe复制到mingw32-make.exe,然后在Cmake-gui中重新configuration。 最后它的作品! 所以我想build议找出是否有mingw32-make.exe或不要解决这个问题。

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

所以出于某种原因,当生成器设置为“MinGW Makefiles”时,工具链文件中的CMAKE_MAKE_PROGRAM设置是无效的,但对于“Unix Makefiles”生成器则是这样。

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

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

看来大家有不同的解决办法。 我解决了我的问题,如:

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

尽pipemingw-make.exe是在上面的path下,一个无效的charecter或长path名混淆了CMake。 我尝试为环境path添加path,尝试将CMAKE作为参数来使用,但对我不起作用。

最后,我把mingw-w64的复杂path移动到“C:/ mingw64”,比设置环境path,重新启动CMake。 问题解决了我。