什么是CMake生成器?

nr7wwzry  于 2022-12-13  发布在  其他
关注(0)|答案(4)|浏览(251)

我看过文件了。
上面写着:

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

这到底是什么意思?
如果我的项目中有一组C++文件,这些文件是输入文件吗?
如果我使用Linux,默认情况下我的本地构建系统是什么?Make
如果输入文件已经存在,为什么生成器必须将其设置为written

vmdwslir

vmdwslir1#

"发电机是什么"
为了理解生成器,我们首先需要了解构建系统。CMake不编译或链接任何源文件。它使用 * 生成器为构建系统创建配置文件。构建系统使用这些文件来编译和链接源代码文件。
"那么什么是构建系统"
构建系统是一个广义的术语,它将通常用于编译和链接源代码的一组工具组合在一起,但它也可以包括在构建过程中使用的辅助工具。
例如,在多阶段生成系统中,可能生成一个可执行文件以用于另一个生成的生成过程。
根据系统上使用的工具链,CMake将生成多个文件和文件夹,以允许构建 CMakeLists.txt 和支持 .cmake 文件中引用的源文件。
有时一台计算机上可能会安装多个构建系统,例如对于Windows,您可能会有Visual Studio和MinGW构建系统。CMake允许您指定要为哪些构建系统生成配置文件。
CMake包含许多Command-LineIDEExtra产生器。

命令行生成工具生成器

这些生成器用于命令行构建工具,如Make和Ninja。所选的工具链必须在用CMake生成构建系统之前进行配置。
支持以下各项(**):

Makefile生成器

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

"忍者发电机"

  • 忍者
  • Ninja多配置
    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的最新版本
  • 2013年Visual Studio 12开发版
  • Visual Studio 2015第14版
  • Visual Studio 15 2017最新版
  • Visual Studio 16 2019的最新版本
  • Visual Studio 17 2022的最新版本
  • 绿色山MULTI
  • X代码
    额外发电机

这些生成器用于创建与备用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.153.25的文档

q5lcpyga

q5lcpyga2#

也许一张照片胜过千言万语。

这个问题也让我困惑了一段时间,才导致我来到这里,我搜索了一些资料,根据我的知识做了这张图,如果图中有错的地方,请你指正,以免误导。

yws3nbqq

yws3nbqq3#

CMake生成器负责为本地构建系统编写输入文件。
表示CMake在未指定生成器时为本地构建系统准备构建脚本。在Linux中,默认构建系统为Make,其输入文件为makefiles,然后解释这些文件并相应地执行构建。在第一次执行CMake构建脚本之前,不存在构建脚本。
C++源文件(或任何其他源文件)不是生成系统的输入文件。生成系统脚本指定如何处理源文件以生成二进制可执行文件。

r6vfmomb

r6vfmomb4#

据我所知,Unix中标准的原生构建系统是“GNU make(gmake)”,也就是众所周知的“make”。谷歌的家伙们还发布了一个不同的工具,叫做“忍者”。

相关问题