【问题标题】:What is a CMake generator?什么是 CMake 生成器?
【发布时间】:2014-11-14 11:57:21
【问题描述】:

我阅读了文档。

上面写着:

A CMake Generator is responsible for writing the input files for a native build system. 

这到底是什么意思?

如果我的项目中有一组 C++ 文件,这些是输入文件吗?

如果我使用的是 Linux,默认情况下我的原生构建系统是什么? Make?

如果输入文件已经存在,为什么生成器必须是written

【问题讨论】:

    标签: cmake generator


    【解决方案1】:

    什么是生成器?

    要了解生成器是什么,我们首先需要了解什么是构建系统。 CMake 不编译或链接任何源文件。它使用 generator为构建系统创建配置文件。构建系统使用这些文件来编译和链接源代码文件。

    那么什么是构建系统?

    构建系统是一个广义术语,将一组用于编译和链接源代码的工具组合在一起,但它也可以包括在构建过程中使用的辅助工具。

    例如,在多阶段构建系统中,可能会构建一个可执行文件以用于另一个构建的构建过程。

    根据系统上使用的工具链,CMake 将生成多个文件和文件夹,以允许构建 CMakeLists.txt 中引用的源文件并支持 .cmake em> 文件。

    有时可能会在一台计算机上安装多个构建系统,例如对于 Windows,您可以拥有 Visual Studio 和 MinGW 构建系统。 CMake 允许您指定为哪些构建系统生成配置文件。

    CMake 包括许多 Command-LineIDEExtra 生成器。

    命令行构建工具生成器

    这些生成器用于命令行构建工具,例如 Make 和 Ninja。必须在使用 CMake 生成构建系统之前配置所选工具链。

    支持以下(**):

    • Borland Makefiles
    • MSYS Makefiles
    • MinGW 生成文件
    • NMake 生成文件
    • NMake Makefiles JOM
    • 忍者
    • Unix Makefiles
    • Watcom WMake

    IDE 构建工具生成器

    这些生成器适用于包含自己的编译器的集成开发环境。示例是 Visual Studio 和 Xcode,它们本机包含编译器。

    支持以下(**):

    • Visual Studio 6
    • Visual Studio 7
    • Visual Studio 7 .NET 2003
    • Visual Studio 8 2005
    • Visual Studio 9 2008
    • Visual Studio 10 2010
    • Visual Studio 11 2012
    • Visual Studio 12 2013
    • Visual Studio 14 2015
    • Visual Studio 15 2017
    • Visual Studio 16 2019
    • Green Hills MULTI
    • Xcode

    额外的生成器

    这些生成器创建配置以与替代 IDE 工具一起使用,并且必须包含在 IDE 或命令行生成器中。

    支持以下(**):

    • 代码块
    • CodeLite
    • Eclipse CDT4
    • KDevelop3(v3.10.3 后不支持)
    • 凯特
    • 崇高文本 2

    如果我的项目中有一组 C++ 文件,这些是输入文件吗?

    是的,它们是一些的输入文件。对于 make 构建系统,您还有一个 MakeFile。对于 Visual Studio,您有一个解决方案文件 (.sln)。对于这两个系统,CMake 需要知道如何在给定适当的 CMakeLists.txt 文件的情况下创建其他文件。

    如果我使用的是 Linux,默认情况下我的原生构建系统是什么?制作?

    一般来说,是的,但可以像 Ninja 一样设置其他构建系统。

    如果输入文件已经存在,为什么还要由生成器写入?

    有些源文件可能已经存在,但 CMake 有能力生成头文件和源文件。同样如上所述,必须生成依赖于 CMakeLists.txt 文件中提供的源文件的配置文件。

    ** 根据 CMake 版本 3.93.15 的文档

    【讨论】:

    • 我可以从 cmd 检查获取 Windows 上 Visual Studio 的可用生成器列表吗?
    • @NikolaLukic 是的,只需运行Cmake -h,帮助输出将列出可用的生成器。
    【解决方案2】:

    也许一张图片值一千个字。

    这个问题也让我困惑了一阵子,才来到这里。我搜索了一些资料,并根据我的知识制作了这张照片。图片如有错误,请指正,以免误导。

    【讨论】:

      【解决方案3】:

      CMake 生成器负责为 本机构建系统。

      表示当没有指定生成器时,CMake 会为原生构建系统准备构建脚本。在 Linux 中,默认构建系统是 Make,其输入文件是 makefiles,然后会对其进行解释并相应地执行构建。在第一次执行 CMake 之前,构建脚本不存在。

      C++ 源文件(或任何其他源文件)不是构建系统的输入文件。构建系统脚本指定如何处理源文件以生成二进制可执行文件。

      【讨论】:

        【解决方案4】:

        据我所知,Unix 中的标准原生构建系统是“GNU make (gmake)”,也称为“make”。 谷歌的人还发布了一个名为“忍者”的不同工具。

        【讨论】:

          猜你喜欢
          • 2019-09-06
          • 2011-09-19
          • 2011-10-23
          • 1970-01-01
          • 1970-01-01
          • 2016-09-17
          • 1970-01-01
          • 2011-04-17
          相关资源
          最近更新 更多