我看过文件了。上面写着:
A CMake Generator is responsible for writing the input files for a native build system.
这到底是什么意思?如果我的项目中有一组C++文件,这些文件是输入文件吗?如果我使用Linux,默认情况下我的本地构建系统是什么?Make?如果输入文件已经存在,为什么生成器必须将其设置为written?
Make
written
vmdwslir1#
"发电机是什么"为了理解生成器,我们首先需要了解构建系统。CMake不编译或链接任何源文件。它使用 * 生成器为构建系统创建配置文件。构建系统使用这些文件来编译和链接源代码文件。"那么什么是构建系统"构建系统是一个广义的术语,它将通常用于编译和链接源代码的一组工具组合在一起,但它也可以包括在构建过程中使用的辅助工具。例如,在多阶段生成系统中,可能生成一个可执行文件以用于另一个生成的生成过程。根据系统上使用的工具链,CMake将生成多个文件和文件夹,以允许构建 CMakeLists.txt 和支持 .cmake 文件中引用的源文件。有时一台计算机上可能会安装多个构建系统,例如对于Windows,您可能会有Visual Studio和MinGW构建系统。CMake允许您指定要为哪些构建系统生成配置文件。CMake包含许多Command-Line、IDE和Extra产生器。
Command-Line
IDE
Extra
命令行生成工具生成器
这些生成器用于命令行构建工具,如Make和Ninja。所选的工具链必须在用CMake生成构建系统之前进行配置。支持以下各项(**):
Makefile生成器
"忍者发电机"
这些生成器适用于集成开发环境,这些环境包含自己的编译器。例如,Visual Studio和Xcode本身就包含编译器。支持以下各项(**):
这些生成器用于创建与备用IDE工具一起使用的配置,并且必须包含在IDE或命令行生成器中。支持以下各项(**):
如果我的项目中有一组C++文件,这些文件是输入文件吗?是的,它们是一些输入文件。对于make编译系统,你也有一个MakeFile。对于Visual Studio,你有一个解决方案文件(.sln)。对于这两个系统,都需要额外的文件,CMake知道如何创建一个合适的CMakeLists.txt文件。如果我使用的是Linux,默认情况下我的原生构建系统是什么?一般来说,是的,但是其他构建系统可以像Ninja一样设置。如果输入文件已经存在,为什么必须由生成器写入?有些源文件可能已经存在,但是CMake能够生成头文件和源文件。同样如上所述,必须生成一些配置文件,这些配置文件取决于CMakeLists.txt文件中提供的源文件。
**根据CMake版本3.9、3.15和3.25的文档
q5lcpyga2#
也许一张照片胜过千言万语。
这个问题也让我困惑了一段时间,才导致我来到这里,我搜索了一些资料,根据我的知识做了这张图,如果图中有错的地方,请你指正,以免误导。
yws3nbqq3#
CMake生成器负责为本地构建系统编写输入文件。表示CMake在未指定生成器时为本地构建系统准备构建脚本。在Linux中,默认构建系统为Make,其输入文件为makefiles,然后解释这些文件并相应地执行构建。在第一次执行CMake构建脚本之前,不存在构建脚本。C++源文件(或任何其他源文件)不是生成系统的输入文件。生成系统脚本指定如何处理源文件以生成二进制可执行文件。
makefiles
r6vfmomb4#
据我所知,Unix中标准的原生构建系统是“GNU make(gmake)”,也就是众所周知的“make”。谷歌的家伙们还发布了一个不同的工具,叫做“忍者”。
4条答案
按热度按时间vmdwslir1#
"发电机是什么"
为了理解生成器,我们首先需要了解构建系统。CMake不编译或链接任何源文件。它使用 * 生成器为构建系统创建配置文件。构建系统使用这些文件来编译和链接源代码文件。
"那么什么是构建系统"
构建系统是一个广义的术语,它将通常用于编译和链接源代码的一组工具组合在一起,但它也可以包括在构建过程中使用的辅助工具。
例如,在多阶段生成系统中,可能生成一个可执行文件以用于另一个生成的生成过程。
根据系统上使用的工具链,CMake将生成多个文件和文件夹,以允许构建 CMakeLists.txt 和支持 .cmake 文件中引用的源文件。
有时一台计算机上可能会安装多个构建系统,例如对于Windows,您可能会有Visual Studio和MinGW构建系统。CMake允许您指定要为哪些构建系统生成配置文件。
CMake包含许多
Command-Line
、IDE
和Extra
产生器。命令行生成工具生成器
这些生成器用于命令行构建工具,如Make和Ninja。所选的工具链必须在用CMake生成构建系统之前进行配置。
支持以下各项(**):
Makefile生成器
"忍者发电机"
IDE生成工具生成器
这些生成器适用于集成开发环境,这些环境包含自己的编译器。例如,Visual Studio和Xcode本身就包含编译器。
支持以下各项(**):
额外发电机
这些生成器用于创建与备用IDE工具一起使用的配置,并且必须包含在IDE或命令行生成器中。
支持以下各项(**):
如果我的项目中有一组C++文件,这些文件是输入文件吗?
是的,它们是一些输入文件。对于make编译系统,你也有一个MakeFile。对于Visual Studio,你有一个解决方案文件(.sln)。对于这两个系统,都需要额外的文件,CMake知道如何创建一个合适的CMakeLists.txt文件。
如果我使用的是Linux,默认情况下我的原生构建系统是什么?
一般来说,是的,但是其他构建系统可以像Ninja一样设置。
如果输入文件已经存在,为什么必须由生成器写入?
有些源文件可能已经存在,但是CMake能够生成头文件和源文件。同样如上所述,必须生成一些配置文件,这些配置文件取决于CMakeLists.txt文件中提供的源文件。
**根据CMake版本3.9、3.15和3.25的文档
q5lcpyga2#
也许一张照片胜过千言万语。
这个问题也让我困惑了一段时间,才导致我来到这里,我搜索了一些资料,根据我的知识做了这张图,如果图中有错的地方,请你指正,以免误导。
yws3nbqq3#
CMake生成器负责为本地构建系统编写输入文件。
表示CMake在未指定生成器时为本地构建系统准备构建脚本。在Linux中,默认构建系统为
Make
,其输入文件为makefiles
,然后解释这些文件并相应地执行构建。在第一次执行CMake构建脚本之前,不存在构建脚本。C++源文件(或任何其他源文件)不是生成系统的输入文件。生成系统脚本指定如何处理源文件以生成二进制可执行文件。
r6vfmomb4#
据我所知,Unix中标准的原生构建系统是“GNU make(gmake)”,也就是众所周知的“make”。谷歌的家伙们还发布了一个不同的工具,叫做“忍者”。