CMAKE_MAKE_PROGRAM未找到。

91

我对CMake已经万念俱灰了;它有很大的潜力,但是似乎无法找到基本系统工具(如make),以便正常运行。

症状

在删除CMakeCache.txt文件后,CMake和CMake GUI会产生以下结果:

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的非标准安装位置(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 工作。 如何使 CMake 在 Windows 7 (64-bit) / MinGW 组合中找到我的 make 程序而无需用户干预?


你可以查看这个答案。https://dev59.com/vMLra4cB1Zd3GeqPUuwO#74240235 - gkhanacer
16个回答

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

如果有用的话,我遇到过几个cmake的问题,包括这个。当我在系统中修复全局变量(在我的情况下是MinGW Codeblocks的路径)时,它们全部消失了。当codeblocks安装不在默认位置,并且由于某些未知原因,该全局变量没有指向正确的位置时,就会出现这种情况。请检查Codeblocks或MinGW的路径是否正确:

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

对我很有用;)


0

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

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


0
我曾经遇到过同样的问题,通过以下方法解决了它:
尝试将所有文件夹重命名为不超过8个字符且没有空格。

0

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


0
我需要将以下行添加到我的Windows路径中才能解决这个问题。否则,只要您勾选了该框,CMAKE应该会在安装时设置正确的路径。由于可能安装的版本多种多样,因此解决方案可能不同。
C:\msys64\mingw32\bin
C:\msys64\mingw64\bin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接