无法从CMake生成Makefile

时间:2019-02-17 09:58:26

标签: c++ makefile cmake

我对CMake感兴趣,因此决定学习它。我遵循CMake Tutorial,直到指出“这就是全部。这时您应该能够构建本教程”,所以我想,让我们尝试一下!

A,看来事情并非如此简单。在咨询cmake -A "Unix Makefiles"之后,我最初尝试运行cmake --help,但是那里也没有运气。相反,它给了我以下内容:

CMake Error at CMakeLists.txt:2 (project):
  Generator

    Unix Makefiles

  does not support platform specification, but platform

    Unix Makefiles

  was specified.


CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage

我开始在Internet上搜索并发现this,但它给了我完全相同的错误。我发现的其他答案似乎与Windows有关,但我本人正在使用Fedora29。

我想使用CMake生成一个makefile,有什么建议吗? (顺便说一下,我已经安装了gcc和g ++)

2 个答案:

答案 0 :(得分:3)

在Fedora上,可能是默认的生成Unix Makefile(例如Makefile,GNU Make将能够使用)。通常,不指定生成器:那么您将获得在已安装的OS上最有意义的东西。某些操作系统确实选择了不同的默认值:例如,FreeBSD使用Ninja。

运行CMake时,您可能需要指定源目录。如果CMake之前已经成功运行过,则可以离开目录。如果没有其他CMake选项或参数,则需要提供目录。

如果您已从教程页面复制粘贴了CMakeLists和C ++文件,则将创建来自默认生成器的任何构建系统:

    cmake .

请注意,如果您根本不给CMake任何参数 ,那么它将为您提供用法字符串。这就是为什么要从当前目录构建.的原因。如果要指定特定的生成器,

    cmake -G "Unix Makefiles" .

如果要在单独的目录中构建(通常是个好主意)

    cmake /path/to/the/sources

顺便说一下,您的原始错误消息告诉您CMake在默认情况下使用 generator Unix Makefile,它不支持设置平台。此后,毫无争议的行为似乎使您绊倒了。

答案 1 :(得分:1)

在评论中进行讨论之后,我意识到问题是我从一开始就做错了。最终的解决方案是删除所有与CMake相关的文件(除CMakeLists.txt之外),然后再次执行所有操作,这次从子目录中单独运行cmake ..(不带任何参数)。