Cmake的生成器Generator
Cmake
的生成器(Cmake Generator
)负责为本地构建系统提供输入文件,我们知道,Cmake
本身并不能直接编译链接和生成可执行文件,而是生成一些规则文件,编译系统再根据这些规则文件来进行真实的编译构建过程。
例如,在Linux
系统下,Cmake
命令会默认输出Makefile
文件,而Makefile
文件就是make
构建所需要的输入文件,因此Linux
系统上默认的Cmake
生成器产生的就是Makefile
文件。
然后,并不是每一个编译构建系统都需要使用make
或Makefile
文件,有些编译构建系统使用的是其他方式,甚至不同的平台上使用make
编译相同的源码,所需要的Makefile
也是有所区别的(例如Linux
和Windows
的文件目录,一个是/
分隔,一个是\
分隔;又例如Makefile
中会调用一些与操作系统有关的命令,同样是删除文件,Linux
下是rm
而Windows
下是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
构建工具的生成器。
命令行工具的生成器
-
Makefile生成器:用于生成适配不同平台的Makefile文件的生成器
-
MSYS Makefiles:生成MYSYS(Minimal SYStem)shell下的Makefile文件
-
MinGW Makefiles:生成Windows下mingw32-make使用的Makefile文件
-
NMake Makefiles:生成NMake使用的Makefile文件
-
NMake Makefiles JOM:生成JOM使用的Makefile文件
-
Watcom WMake:生成Watcom WMake使用的Makefile文件
-
Ninja生成器:另外一个编译构建系统
-
Ninja:生成build.ninja文件
-
Ninja Multi-Config:生成多个build-<Config>.ninja文件
-
IDE构建工具的生成器
-
Visual Studio生成器
-
其他IDE生成器