找不到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议:
-
你有%PATH%环境variables吗? 在我的系统上,我需要将%MINGW_DIR%\ bin添加到%PATH%。
-
你有没有安装? 根据你的mingw安装,它可以是一个单独的包。
-
最后的手段:你可以通过命令行完整的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。 问题解决了我。