我阅读了文档。
它说:
A CMake Generator is responsible for writing the input files for a native build system.
究竟是什么意思?
如果我的项目中有一组C ++文件,这些是输入文件吗?
如果我使用Linux,默认情况下我的本机构建系统是什么? Make
?
如果输入文件已经存在,为什么输入文件必须是written
?
答案 0 :(得分:18)
什么是发电机?
要了解生成器是什么,我们首先需要了解什么是构建系统。 CMake不编译或链接任何源文件。它使用生成器来为构建系统创建配置文件。构建系统使用这些文件来编译和链接源代码文件。
那么什么是构建系统?
构建系统是一个广义的术语,它将一组用于编译和链接源代码的工具组合在一起,但它也可以包括构建过程中使用的辅助工具。
例如,在多阶段构建系统中,可以构建一个可执行文件以在另一个构建的构建过程中使用。
根据系统上使用的工具链,CMake将生成多个文件和文件夹,以允许构建 CMakeLists.txt 中引用的源文件并支持 .cmake 文件。
有时可能会在计算机上安装多个构建系统,例如Windows,您可以使用Visual Studio和MinGW构建系统。 CMake允许您指定哪些构建系统生成配置文件。
CMake包含许多Command-Line
,IDE
和Extra
生成器。
命令行构建工具生成器
这些生成器用于命令行构建工具,如Make和Ninja。必须在使用CMake生成构建系统之前配置所选的工具链。
支持以下内容(**):
IDE构建工具生成器
这些生成器适用于包含自己的编译器的集成开发环境。示例是Visual Studio和Xcode,它们本身包含一个编译器。
支持以下内容(**):
额外发电机
这些是生成器创建配置以使用备用IDE工具,并且必须包含在IDE或命令行生成器中。
支持以下内容(**):
如果我的项目中有一组C ++文件,这些是输入文件吗?
是的,它们是输入文件的部分。对于make build系统,您还有一个MakeFile。对于Visual Studio,您有一个解决方案文件(.sln)。对于这两个系统,CMake需要额外的文件才能知道如何创建给定的CMakeLists.txt文件。
如果我使用Linux,默认情况下我的本机构建系统是什么?使?
通常,是的,但其他构建系统可以设置为Ninja。
为什么输入文件必须由生成器写入?如果它们已经存在?
某些源文件可能已存在,但CMake可以生成标头和源文件。同样如上所述,必须生成依赖于CMakeLists.txt文件中提供的源文件的配置文件。
**根据CMake版本3.9的documentation
答案 1 :(得分:3)
答案 2 :(得分:2)
CMake Generator负责编写a的输入文件 本机构建系统。
表示当没有指定生成器时,CMake为本机构建系统准备构建脚本。在Linux中,默认构建系统为Make
,其输入文件为makefiles
,然后对其进行解释,并相应地执行构建。在第一次执行CMake构建脚本之前不存在。
C ++源文件(或任何其他源文件)不是构建系统的输入文件。构建系统脚本指定如何处理源文件以生成二进制可执行文件。
答案 3 :(得分:0)
据我所知,Unix中的标准本机构建系统是" GNU make(gmake)"被称为" make"。 谷歌家伙还发布了一个名为" Ninja"的其他工具。