【问题标题】:Set CMAKE_MAKE_PROGRAM to mingw32-make from inside the CMakeLists.txt从 CMakeLists.txt 中将 CMAKE_MAKE_PROGRAM 设置为 mingw32-make
【发布时间】:2020-04-08 18:40:32
【问题描述】:

this post 之后,如果我在我的build 文件夹中运行cmake .. 而没有任何选项,我会收到错误消息:

CMake 错误:CMake 无法找到与“Unix Makefiles”对应的构建程序。 CMAKE_MAKE_PROGRAM 未设置。您可能需要选择不同的构建工具。 CMake 错误:在 EnableLanguage 之后未设置 CMAKE_Fortran_COMPILER CMake 错误:在 EnableLanguage 之后未设置 CMAKE_C_COMPILER CMake 错误:在 EnableLanguage 之后未设置 CMAKE_CXX_COMPILER -- 配置不完整,出现错误!

我可以通过运行来解决

cmake .. -D CMAKE_MAKE_PROGRAM:PATH=/mingw64/bin/mingw32-make

但是,我想从CMakeLists.txt 文件中设置CMAKE_MAKE_PROGRAM。我试过了

if(MSYS)
  set(CMAKE_MAKE_PROGRAM /mingw64/bin/mingw32-make)
endif(MSYS)

但它不起作用。如果您能帮助我了解如何解决此问题,我将不胜感激。

P.S.1. Here 是代码。

P.S.2.我试过了

set(CMAKE_MAKE_PROGRAM /mingw64/bin/mingw32-makemingw32-make CACHE FILEPATH "" FORCE)

按照 cmets 的建议,但没有帮助。

P.S.3.我的操作系统是Windows 10 version 1909,我在MSYS2终端MSYS_NT-10.0-18363运行上面的命令

【问题讨论】:

  • 在这个答案中:Why doesn't "CMAKE_MAKE_PROGRAM" variable take effect?,看到您需要将CMAKE_MAKE_PROGRAM 设置为 cache 变量,而不是常规的 CMake 变量。
  • @squareskittles 我试过set(CMAKE_MAKE_PROGRAM mingw32-make CACHE FILEPATH "" FORCE),但没有用。
  • 您所说的“它不起作用”是什么意思?您是否收到与问题帖子中显示的相同的错误消息?此外,为安全起见,设置此变量时,您应该使用 make 程序的 完整 路径。
  • @squareskittles 是的,完全相同的错误。我也尝试了完整路径。请参阅 P.S.2。
  • 这个错误很特殊。你能提供一些关于你的开发环境的背景信息吗?您使用的是什么操作系统?您使用的 MinGW 路径似乎是 Unix 路径?这是为什么呢?

标签: cmake mingw-w64 msys2


【解决方案1】:

好的,我想我解决了这个问题。从here,我需要安装MSYS2的make

pacman -S make

这对我来说似乎也是一种趋势。我最近在 MSYS2 中遇到了几个问题,这些问题已通过删除 MinGW 包并用 MSYS2 包替换它来解决。所以它告诉我,在 MSYS2 中工作时,如果 MSYS2 包可用,我应该更喜欢它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多