cmake-generators man page

cmake-generators — CMake Generators Reference

Introduction

A CMake Generator is responsible for writing the input files for a native build system.  Exactly one of the CMake Generators must be selected for a build tree to determine what native build system is to be used.  Optionally one of the Extra Generators may be selected as a variant of some of the Command-Line Build Tool Generators to produce project files for an auxiliary IDE.

CMake Generators are platform-specific so each may be available only on certain platforms.  The cmake(1) command-line tool --help output lists available generators on the current platform.  Use its -G option to specify the generator for a new build tree. The cmake-gui(1) offers interactive selection of a generator when creating a new build tree.

Cmake Generators

Command-Line Build Tool Generators

These generators support command-line build tools.  In order to use them, one must launch CMake from a command-line prompt whose environment is already configured for the chosen compiler and build tool.

Makefile Generators

Borland Makefiles

Generates Borland makefiles.

MSYS Makefiles

Generates makefiles for use with MSYS make under the MSYS shell.

Use this generator in a MSYS shell prompt and using make as the build tool.  The generated makefiles use /bin/sh as the shell to launch build rules.  They are not compatible with a Windows command prompt.

To build under a Windows command prompt, use the MinGW Makefiles generator.

MinGW Makefiles

Generates makefiles for use with mingw32-make under a Windows command prompt.

Use this generator under a Windows command prompt with MinGW in the PATH and using mingw32-make as the build tool.  The generated makefiles use cmd.exe as the shell to launch build rules.  They are not compatible with MSYS or a unix shell.

To build under the MSYS shell, use the MSYS Makefiles generator.

NMake Makefiles

Generates NMake makefiles.

NMake Makefiles JOM

Generates JOM makefiles.

Unix Makefiles

Generates standard UNIX makefiles.

A hierarchy of UNIX makefiles is generated into the build tree.  Any standard UNIX-style make program can build the project through the default make target.  A “make install” target is also provided.

Watcom WMake

Generates Watcom WMake makefiles.

Ninja Generator

Ninja

Generates build.ninja files.

A build.ninja file is generated into the build tree.  Recent versions of the ninja program can build the project through the “all” target. An “install” target is also provided.

For each subdirectory sub/dir of the project, additional targets are generated:

sub/dir/all

Depends on all targets required by the subdirectory.

sub/dir/install

Runs the install step in the subdirectory, if any.

sub/dir/test

Runs the test step in the subdirectory, if any.

sub/dir/package

Runs the package step in the subdirectory, if any.

Fortran Support

The Ninja generator conditionally supports Fortran when the ninja tool has the required features.  As of this version of CMake the needed features have not been integrated into upstream Ninja.  Kitware maintains a branch of Ninja with the required features on github.com/Kitware/ninja.

IDE Build Tool Generators

These generators support Integrated Development Environment (IDE) project files.  Since the IDEs configure their own environment one may launch CMake from any environment.

Visual Studio Generators

Visual Studio 6

Removed.  This once generated Visual Studio 6 project files, but the generator has been removed since CMake 3.6.  It is still possible to build with VS 6 tools using the NMake Makefiles generator.

Visual Studio 7

Removed.  This once generated Visual Studio .NET 2002 project files, but the generator has been removed since CMake 3.6.  It is still possible to build with VS 7.0 tools using the NMake Makefiles generator.

Visual Studio 7 .NET 2003

Removed.  This once generated Visual Studio .NET 2003 project files, but the generator has been removed since CMake 3.9.  It is still possible to build with VS 7.1 tools using the NMake Makefiles generator.

Visual Studio 8 2005

Deprecated.  Generates Visual Studio 8 2005 project files.

NOTE:

This generator is deprecated and will be removed in a future version of CMake.  It will still be possible to build with VS 8 2005 tools using the Visual Studio 10 2010 (or above) generator with CMAKE_GENERATOR_TOOLSET set to v80, or by using the NMake Makefiles generator.

The CMAKE_GENERATOR_PLATFORM variable may be set to specify a target platform name.

For compatibility with CMake versions prior to 3.1, one may specify a target platform name optionally at the end of this generator name:

Visual Studio 8 2005 Win64

Specify target platform x64.

Visual Studio 8 2005 <WinCE-SDK>

Specify target platform matching a Windows CE SDK name.

Visual Studio 9 2008

Generates Visual Studio 9 2008 project files.

The CMAKE_GENERATOR_PLATFORM variable may be set to specify a target platform name.

For compatibility with CMake versions prior to 3.1, one may specify a target platform name optionally at the end of this generator name:

Visual Studio 9 2008 Win64

Specify target platform x64.

Visual Studio 9 2008 IA64

Specify target platform Itanium.

Visual Studio 9 2008 <WinCE-SDK>

Specify target platform matching a Windows CE SDK name.

Visual Studio 10 2010

Generates Visual Studio 10 (VS 2010) project files.

The CMAKE_GENERATOR_PLATFORM variable may be set to specify a target platform name (architecture).

For compatibility with CMake versions prior to 3.1, one may specify a target platform name optionally at the end of this generator name:

Visual Studio 10 2010 Win64

Specify target platform x64.

Visual Studio 10 2010 IA64

Specify target platform Itanium.

For compatibility with CMake versions prior to 3.0, one may specify this generator using the name Visual Studio 10 without the year component.

Toolset Selection

The v100 toolset that comes with Visual Studio 10 2010 is selected by default.  The CMAKE_GENERATOR_TOOLSET option may be set, perhaps via the cmake(1) -T option, to specify another toolset.

Visual Studio 11 2012

Generates Visual Studio 11 (VS 2012) project files.

The CMAKE_GENERATOR_PLATFORM variable may be set to specify a target platform name (architecture).

For compatibility with CMake versions prior to 3.1, one may specify a target platform name optionally at the end of this generator name:

Visual Studio 11 2012 Win64

Specify target platform x64.

Visual Studio 11 2012 ARM

Specify target platform ARM.

Visual Studio 11 2012 <WinCE-SDK>

Specify target platform matching a Windows CE SDK name.

For compatibility with CMake versions prior to 3.0, one may specify this generator using the name “Visual Studio 11” without the year component.

Toolset Selection

The v110 toolset that comes with Visual Studio 11 2012 is selected by default.  The CMAKE_GENERATOR_TOOLSET option may be set, perhaps via the cmake(1) -T option, to specify another toolset.

Visual Studio 12 2013

Generates Visual Studio 12 (VS 2013) project files.

The CMAKE_GENERATOR_PLATFORM variable may be set to specify a target platform name (architecture).

For compatibility with CMake versions prior to 3.1, one may specify a target platform name optionally at the end of this generator name:

Visual Studio 12 2013 Win64

Specify target platform x64.

Visual Studio 12 2013 ARM

Specify target platform ARM.

For compatibility with CMake versions prior to 3.0, one may specify this generator using the name “Visual Studio 12” without the year component.

Toolset Selection

The v120 toolset that comes with Visual Studio 12 2013 is selected by default.  The CMAKE_GENERATOR_TOOLSET option may be set, perhaps via the cmake(1) -T option, to specify another toolset.

For each toolset that comes with this version of Visual Studio, there are variants that are themselves compiled for 32-bit (x86) and 64-bit (x64) hosts (independent of the architecture they target).  By default Visual Studio chooses the 32-bit variant even on a 64-bit host.  One may request use of the 64-bit host tools by adding a host=x64 option to the toolset specification. See the CMAKE_GENERATOR_TOOLSET variable for details.

Visual Studio 14 2015

Generates Visual Studio 14 (VS 2015) project files.

The CMAKE_GENERATOR_PLATFORM variable may be set to specify a target platform name (architecture).

For compatibility with CMake versions prior to 3.1, one may specify a target platform name optionally at the end of this generator name:

Visual Studio 14 2015 Win64

Specify target platform x64.

Visual Studio 14 2015 ARM

Specify target platform ARM.

Toolset Selection

The v140 toolset that comes with Visual Studio 14 2015 is selected by default.  The CMAKE_GENERATOR_TOOLSET option may be set, perhaps via the cmake(1) -T option, to specify another toolset.

For each toolset that comes with this version of Visual Studio, there are variants that are themselves compiled for 32-bit (x86) and 64-bit (x64) hosts (independent of the architecture they target).  By default Visual Studio chooses the 32-bit variant even on a 64-bit host.  One may request use of the 64-bit host tools by adding a host=x64 option to the toolset specification. See the CMAKE_GENERATOR_TOOLSET variable for details.

Visual Studio 15 2017

Generates Visual Studio 15 (VS 2017) project files.

The CMAKE_GENERATOR_PLATFORM variable may be set to specify a target platform name (architecture).

For compatibility with CMake versions prior to 3.1, one may specify a target platform name optionally at the end of this generator name:

Visual Studio 15 2017 Win64

Specify target platform x64.

Visual Studio 15 2017 ARM

Specify target platform ARM.

Instance Selection

VS 2017 supports multiple installations on the same machine. CMake queries the Visual Studio Installer to locate VS instances. If more than one instance is installed we do not define which one is chosen by default.  If the VS150COMNTOOLS environment variable is set and points to the Common7/Tools directory within one of the instances, that instance will be used.  The environment variable must remain consistently set whenever CMake is re-run within a given build tree.

Toolset Selection

The v141 toolset that comes with Visual Studio 15 2017 is selected by default.  The CMAKE_GENERATOR_TOOLSET option may be set, perhaps via the cmake(1) -T option, to specify another toolset.

For each toolset that comes with this version of Visual Studio, there are variants that are themselves compiled for 32-bit (x86) and 64-bit (x64) hosts (independent of the architecture they target).  By default Visual Studio chooses the 32-bit variant even on a 64-bit host.  One may request use of the 64-bit host tools by adding a host=x64 option to the toolset specification. See the CMAKE_GENERATOR_TOOLSET variable for details.

Other Generators

Green Hills MULTI

Generates Green Hills MULTI project files (experimental, work-in-progress).

Customizations are available through the following cache variables:

  • GHS_BSP_NAME
  • GHS_CUSTOMIZATION
  • GHS_GPJ_MACROS
  • GHS_OS_DIR
NOTE:

This generator is deemed experimental as of CMake 3.9.6 and is still a work in progress.  Future versions of CMake may make breaking changes as the generator matures.

Xcode

Generate Xcode project files.

This supports Xcode 3.0 and above.

Toolset Selection

By default Xcode is allowed to select its own default toolchain. The CMAKE_GENERATOR_TOOLSET option may be set, perhaps via the cmake(1) -T option, to specify another toolset.

Extra Generators

Some of the CMake Generators listed in the cmake(1) command-line tool --help output may have variants that specify an extra generator for an auxiliary IDE tool.  Such generator names have the form <extra-generator> - <main-generator>. The following extra generators are known to CMake.

CodeBlocks

Generates CodeBlocks project files.

Project files for CodeBlocks will be created in the top directory and in every subdirectory which features a CMakeLists.txt file containing a PROJECT() call.  Additionally a hierarchy of makefiles is generated into the build tree.  The appropriate make program can build the project through the default make target.  A “make install” target is also provided.

This “extra” generator may be specified as:

CodeBlocks - MinGW Makefiles

Generate with MinGW Makefiles.

CodeBlocks - NMake Makefiles

Generate with NMake Makefiles.

CodeBlocks - NMake Makefiles JOM

Generate with NMake Makefiles JOM.

CodeBlocks - Ninja

Generate with Ninja.

CodeBlocks - Unix Makefiles

Generate with Unix Makefiles.

CodeLite

Generates CodeLite project files.

Project files for CodeLite will be created in the top directory and in every subdirectory which features a CMakeLists.txt file containing a project() call. The CMAKE_CODELITE_USE_TARGETS variable may be set to ON to change the default behaviour from projects to targets as the basis for project files. The appropriate make program can build the project through the default make target.  A “make install” target is also provided.

This “extra” generator may be specified as:

CodeLite - MinGW Makefiles

Generate with MinGW Makefiles.

CodeLite - NMake Makefiles

Generate with NMake Makefiles.

CodeLite - Ninja

Generate with Ninja.

CodeLite - Unix Makefiles

Generate with Unix Makefiles.

Eclipse CDT4

Generates Eclipse CDT 4.0 project files.

Project files for Eclipse will be created in the top directory.  In out of source builds, a linked resource to the top level source directory will be created.  Additionally a hierarchy of makefiles is generated into the build tree.  The appropriate make program can build the project through the default make target.  A “make install” target is also provided.

This “extra” generator may be specified as:

Eclipse CDT4 - MinGW Makefiles

Generate with MinGW Makefiles.

Eclipse CDT4 - NMake Makefiles

Generate with NMake Makefiles.

Eclipse CDT4 - Ninja

Generate with Ninja.

Eclipse CDT4 - Unix Makefiles

Generate with Unix Makefiles.

KDevelop3

Generates KDevelop 3 project files.

Project files for KDevelop 3 will be created in the top directory and in every subdirectory which features a CMakeLists.txt file containing a PROJECT() call.  If you change the settings using KDevelop cmake will try its best to keep your changes when regenerating the project files.  Additionally a hierarchy of UNIX makefiles is generated into the build tree.  Any standard UNIX-style make program can build the project through the default make target.  A “make install” target is also provided.

This “extra” generator may be specified as:

KDevelop3 - Unix Makefiles

Generate with Unix Makefiles.

KDevelop3

Generate with Unix Makefiles.

For historical reasons this extra generator may be specified directly as the main generator and it will be used as the extra generator with Unix Makefiles automatically.

Kate

Generates Kate project files.

A project file for Kate will be created in the top directory in the top level build directory. To use it in kate, the Project plugin must be enabled. The project file is loaded in kate simply by opening the ProjectName.kateproject file in the editor. If the kate Build-plugin is enabled, all targets generated by CMake are available for building.

This “extra” generator may be specified as:

Kate - MinGW Makefiles

Generate with MinGW Makefiles.

Kate - NMake Makefiles

Generate with NMake Makefiles.

Kate - Ninja

Generate with Ninja.

Kate - Unix Makefiles

Generate with Unix Makefiles.

Sublime Text 2

Generates Sublime Text 2 project files.

Project files for Sublime Text 2 will be created in the top directory and in every subdirectory which features a CMakeLists.txt file containing a PROJECT() call.  Additionally Makefiles (or build.ninja files) are generated into the build tree.  The appropriate make program can build the project through the default make target.  A “make install” target is also provided.

This “extra” generator may be specified as:

Sublime Text 2 - MinGW Makefiles

Generate with MinGW Makefiles.

Sublime Text 2 - NMake Makefiles

Generate with NMake Makefiles.

Sublime Text 2 - Ninja

Generate with Ninja.

Sublime Text 2 - Unix Makefiles

Generate with Unix Makefiles.

Referenced By

ccmake(1), cmake(1), cmake-variables(7), ctest(1).

Nov 10, 2017 3.9.6 CMake