Cmake的生成器Generator

2023-08-30  本文已影响0人  Domibaba

Cmake的生成器(Cmake Generator)负责为本地构建系统提供输入文件,我们知道,Cmake本身并不能直接编译链接和生成可执行文件,而是生成一些规则文件,编译系统再根据这些规则文件来进行真实的编译构建过程。

例如,在Linux系统下,Cmake命令会默认输出Makefile文件,而Makefile文件就是make构建所需要的输入文件,因此Linux系统上默认的Cmake生成器产生的就是Makefile文件。

然后,并不是每一个编译构建系统都需要使用makeMakefile文件,有些编译构建系统使用的是其他方式,甚至不同的平台上使用make编译相同的源码,所需要的Makefile也是有所区别的(例如LinuxWindows的文件目录,一个是/分隔,一个是\分隔;又例如Makefile中会调用一些与操作系统有关的命令,同样是删除文件,Linux下是rmWindows下是del),因此不同的生成器也是平台相关的,会根据要求生成本地编译构建系统所需要的输入文件。

本文将简单介绍Cmake当前支持的生成器分类。

如何指定生成器

可以在命令行中通过-G generator_name指定生成器,例如cmake -G "Unix Makefiles"指定生成适配类Unix系统的Makefile文件。

通过cmake --help可以查询支持的生成器,例如在Linux下的输出,前面带"*"号的表明未使用-G指定时Cmake使用的默认生成器:

Generators

The following generators are available on this platform (* marks default):
 Green Hills MULTI            = Generates Green Hills MULTI files
 (experimental, work-in-progress).
* Unix Makefiles               = Generates standard UNIX makefiles.
 Ninja                        = Generates build.ninja files.
 Ninja Multi-Config           = Generates build-<Config>.ninja files.
 Watcom WMake                 = Generates Watcom WMake makefiles.
 CodeBlocks - Ninja           = Generates CodeBlocks project files.
 CodeBlocks - Unix Makefiles  = Generates CodeBlocks project files.
 CodeLite - Ninja             = Generates CodeLite project files.
 CodeLite - Unix Makefiles    = Generates CodeLite project files.
 Eclipse CDT4 - Ninja         = Generates Eclipse CDT 4.0 project files.
 Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
 Kate - Ninja                 = Generates Kate project files.
 Kate - Unix Makefiles        = Generates Kate project files.
 Sublime Text 2 - Ninja       = Generates Sublime Text 2 project files.
 Sublime Text 2 - Unix Makefiles
 = Generates Sublime Text 2 project files.

生成器的简介

主要分两类,一类是命令行构建工具的生成器,一类是IDE构建工具的生成器。

命令行工具的生成器

IDE构建工具的生成器


附录:参考文档

  1. https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html#id7
上一篇 下一篇

猜你喜欢

热点阅读