什么是生成器?
要了解生成器是什么,我们首先需要了解什么是构建系统。 CMake 不编译或链接任何源文件。它使用 generator 来为构建系统创建配置文件。构建系统使用这些文件来编译和链接源代码文件。
那么什么是构建系统?
构建系统是一个广义术语,将一组用于编译和链接源代码的工具组合在一起,但它也可以包括在构建过程中使用的辅助工具。
例如,在多阶段构建系统中,可能会构建一个可执行文件以用于另一个构建的构建过程。
根据系统上使用的工具链,CMake 将生成多个文件和文件夹,以允许构建 CMakeLists.txt 中引用的源文件并支持 .cmake em> 文件。
有时可能会在一台计算机上安装多个构建系统,例如对于 Windows,您可以拥有 Visual Studio 和 MinGW 构建系统。 CMake 允许您指定为哪些构建系统生成配置文件。
CMake 包括许多 Command-Line、IDE 和 Extra 生成器。
命令行构建工具生成器
这些生成器用于命令行构建工具,例如 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.9 和 3.15 的文档