我看了文档.
它说:
A CMake Generator is responsible for writing the input files for a native build system.
Run Code Online (Sandbox Code Playgroud)
这到底是什么意思呢?
如果我的项目中有一组C++文件,这些是输入文件吗?
如果我使用Linux,默认情况下我的本机构建系统是什么?Make?
为什么输入文件必须written由生成器存在?
jms*_*ker 23
什么是发电机?
要了解生成器是什么,我们首先需要了解什么是构建系统.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,默认情况下我的本机构建系统是什么?使?
通常,是的,但其他构建系统可以像忍者一样设置.
为什么输入文件必须由生成器写入(如果它们已经存在)?
某些源文件可能已经存在,但CMake能够生成头文件和源文件.同样如上所述,必须生成依赖于CMakeLists.txt文件中提供的源文件的配置文件.
**根据CMake版本3.9 的文档
CMake 生成器负责为本机构建系统编写输入文件。
意味着当没有指定生成器时,CMake 为本地构建系统准备构建脚本。在 Linux 中,默认构建系统是Make,其输入文件是makefiles,然后解释并相应地执行构建。在第一次执行 CMake 构建脚本之前不存在。
C++ 源文件(或任何其他源文件)不是构建系统的输入文件。构建系统脚本指定如何处理源文件以生成二进制可执行文件。