focal (7) cmake-generators.7.gz

Provided by: cmake-data_3.16.3-1ubuntu1.20.04.1_all bug

NAME

       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 (Minimal SYStem) 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 (Minimalist GNU for Windows) 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.  Use any standard UNIX-style make program
       to build  the  project  through  the  all  target  and  install  the  project  through  the  install  (or
       install/strip) target.

       For  each  subdirectory  sub/dir of the project a UNIX makefile will be created, containing the following
       targets:

       all    Depends on all targets required by the subdirectory.

       install
              Runs the install step in the subdirectory, if any.

       install/strip
              Runs the install step in the subdirectory followed by a CMAKE_STRIP command, if any.

              The CMAKE_STRIP variable  will  contain  the  platform’s  strip  utility,  which  removes  symbols
              information from generated binaries.

       test   Runs the test step in the subdirectory, if any.

       package
              Runs the package step in the subdirectory, if any.

   Watcom WMake
       Generates Watcom WMake makefiles.

   Ninja Generator
   Ninja
       Generates build.ninja files.

       A  build.ninja file is generated into the build tree.  Use the ninja program to build the project through
       the all target and install the project through the install (or install/strip) target.

       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/install/strip
              Runs the install step in the subdirectory followed by a CMAKE_STRIP command, if any.

              The CMAKE_STRIP variable  will  contain  the  platform’s  strip  utility,  which  removes  symbols
              information from generated binaries.

       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
       Removed.   This  once  generated  Visual  Studio 8 2005 project files, but the generator has been removed
       since CMake 3.12.  It is still possible to build with VS 2005 tools using the NMake Makefiles generator.

   Visual Studio 9 2008
       Generates Visual Studio 9 2008 project files.

   Platform Selection
       The default target platform name (architecture) is Win32.

       The CMAKE_GENERATOR_PLATFORM variable may be set, perhaps via the cmake(1) -A option, to specify a target
       platform name (architecture).  For example:

       • cmake -G "Visual Studio 9 2008" -A Win32cmake -G "Visual Studio 9 2008" -A x64cmake -G "Visual Studio 9 2008" -A Itaniumcmake  -G  "Visual  Studio  9 2008" -A <WinCE-SDK> (Specify a target platform matching a Windows CE SDK
         name.)

       For compatibility with CMake versions prior to 3.1, one may specify a target platform name optionally  at
       the end of the generator name.  This is supported only for:

       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.

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

   Project Types
       Only Visual C++ and C# projects may be generated.  Other types of projects (Database, Website, etc.)  are
       not supported.

   Platform Selection
       The default target platform name (architecture) is Win32.

       The CMAKE_GENERATOR_PLATFORM variable may be set, perhaps via the cmake(1) -A option, to specify a target
       platform name (architecture).  For example:

       • cmake -G "Visual Studio 10 2010" -A Win32cmake -G "Visual Studio 10 2010" -A x64cmake -G "Visual Studio 10 2010" -A Itanium

       For compatibility with CMake versions prior to 3.1, one may specify a target platform name optionally  at
       the end of the generator name.  This is supported only for:

       Visual Studio 10 2010 Win64
              Specify target platform x64.

       Visual Studio 10 2010 IA64
              Specify target platform Itanium.

   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.

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

   Project Types
       Only Visual C++ and C# projects may  be  generated.   Other  types  of  projects  (JavaScript,  Database,
       Website, etc.) are not supported.

   Platform Selection
       The default target platform name (architecture) is Win32.

       The CMAKE_GENERATOR_PLATFORM variable may be set, perhaps via the cmake(1) -A option, to specify a target
       platform name (architecture).  For example:

       • cmake -G "Visual Studio 11 2012" -A Win32cmake -G "Visual Studio 11 2012" -A x64cmake -G "Visual Studio 11 2012" -A ARMcmake -G "Visual Studio 11 2012" -A <WinCE-SDK> (Specify a target platform matching a  Windows  CE  SDK
         name.)

       For  compatibility with CMake versions prior to 3.1, one may specify a target platform name optionally at
       the end of the generator name.  This is supported only for:

       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.

   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.

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

   Project Types
       Only  Visual  C++  and  C#  projects  may be generated.  Other types of projects (JavaScript, Powershell,
       Python, etc.) are not supported.

   Platform Selection
       The default target platform name (architecture) is Win32.

       The CMAKE_GENERATOR_PLATFORM variable may be set, perhaps via the cmake(1) -A option, to specify a target
       platform name (architecture).  For example:

       • cmake -G "Visual Studio 12 2013" -A Win32cmake -G "Visual Studio 12 2013" -A x64cmake -G "Visual Studio 12 2013" -A ARM

       For  compatibility with CMake versions prior to 3.1, one may specify a target platform name optionally at
       the end of the generator name.  This is supported only for:

       Visual Studio 12 2013 Win64
              Specify target platform x64.

       Visual Studio 12 2013 ARM
              Specify target platform ARM.

   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 this generator uses the 32-bit variant even on a 64-bit host.  One may explicitly request use  of
       either  the  32-bit  or  64-bit  host  tools  by  adding  either  host=x86  or  host=x64  to  the toolset
       specification.  See the CMAKE_GENERATOR_TOOLSET variable for details.

   Visual Studio 14 2015
       Generates Visual Studio 14 (VS 2015) project files.

   Project Types
       Only Visual C++ and C# projects may be generated.   Other  types  of  projects  (JavaScript,  Powershell,
       Python, etc.) are not supported.

   Platform Selection
       The default target platform name (architecture) is Win32.

       The CMAKE_GENERATOR_PLATFORM variable may be set, perhaps via the cmake(1) -A option, to specify a target
       platform name (architecture).  For example:

       • cmake -G "Visual Studio 14 2015" -A Win32cmake -G "Visual Studio 14 2015" -A x64cmake -G "Visual Studio 14 2015" -A ARM

       For compatibility with CMake versions prior to 3.1, one may specify a target platform name optionally  at
       the end of the generator name.  This is supported only for:

       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  this generator uses the 32-bit variant even on a 64-bit host.  One may explicitly request use of
       either the  32-bit  or  64-bit  host  tools  by  adding  either  host=x86  or  host=x64  to  the  toolset
       specification.  See the CMAKE_GENERATOR_TOOLSET variable for details.

   Visual Studio 15 2017
       Generates Visual Studio 15 (VS 2017) project files.

   Project Types
       Only  Visual  C++  and  C#  projects  may be generated.  Other types of projects (JavaScript, Powershell,
       Python, etc.) are not supported.

   Instance Selection
       VS 2017 supports multiple installations on the same machine.  The CMAKE_GENERATOR_INSTANCE  variable  may
       be  set  as  a cache entry containing the absolute path to a Visual Studio instance.  If the value is not
       specified explicitly by the user or a toolchain file, CMake queries the Visual Studio Installer to locate
       VS instances, chooses one, and sets the variable as a cache entry to hold the value persistently.

       When CMake first chooses an instance, if the VS150COMNTOOLS environment variable is set and points to the
       Common7/Tools directory within one of the instances, that instance will be used.  Otherwise, if more than
       one instance is installed we do not define which one is chosen by default.

   Platform Selection
       The default target platform name (architecture) is Win32.

       The CMAKE_GENERATOR_PLATFORM variable may be set, perhaps via the cmake(1) -A option, to specify a target
       platform name (architecture).  For example:

       • cmake -G "Visual Studio 15 2017" -A Win32cmake -G "Visual Studio 15 2017" -A x64cmake -G "Visual Studio 15 2017" -A ARMcmake -G "Visual Studio 15 2017" -A ARM64

       For compatibility with CMake versions prior to 3.1, one may specify a target platform name optionally  at
       the end of the generator name.  This is supported only for:

       Visual Studio 15 2017 Win64
              Specify target platform x64.

       Visual Studio 15 2017 ARM
              Specify target platform ARM.

   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  this generator uses the 32-bit variant even on a 64-bit host.  One may explicitly request use of
       either the  32-bit  or  64-bit  host  tools  by  adding  either  host=x86  or  host=x64  to  the  toolset
       specification.  See the CMAKE_GENERATOR_TOOLSET variable for details.

   Visual Studio 16 2019
       Generates Visual Studio 16 (VS 2019) project files.

   Project Types
       Only  Visual  C++  and  C#  projects  may be generated.  Other types of projects (JavaScript, Powershell,
       Python, etc.) are not supported.

   Instance Selection
       VS 2019 supports multiple installations on the same machine.  The CMAKE_GENERATOR_INSTANCE  variable  may
       be  set  as  a cache entry containing the absolute path to a Visual Studio instance.  If the value is not
       specified explicitly by the user or a toolchain file, CMake queries the Visual Studio Installer to locate
       VS instances, chooses one, and sets the variable as a cache entry to hold the value persistently.

       When CMake first chooses an instance, if the VS160COMNTOOLS environment variable is set and points to the
       Common7/Tools directory within one of the instances, that instance will be used.  Otherwise, if more than
       one instance is installed we do not define which one is chosen by default.

   Platform Selection
       The  default  target  platform  name  (architecture)  is  that  of  the  host  and  is  provided  in  the
       CMAKE_VS_PLATFORM_NAME_DEFAULT variable.

       The CMAKE_GENERATOR_PLATFORM variable may be set, perhaps via the cmake(1) -A option, to specify a target
       platform name (architecture).  For example:

       • cmake -G "Visual Studio 16 2019" -A Win32cmake -G "Visual Studio 16 2019" -A x64cmake -G "Visual Studio 16 2019" -A ARMcmake -G "Visual Studio 16 2019" -A ARM64

   Toolset Selection
       The   v142   toolset   that   comes   with   Visual   Studio   16  2019  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  this  generator  uses the 64-bit variant on x64 hosts and the 32-bit variant otherwise.  One may
       explicitly request use of either the 32-bit or 64-bit host tools by adding either host=x86 or host=x64 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).

       The   buildsystem  has  predetermined  build-configuration  settings  that  can  be  controlled  via  the
       CMAKE_BUILD_TYPE variable.

       Customizations that are used to pick toolset and target system:

       The -A <arch> can be supplied for setting the target architecture.  <arch> usually is one  of  arm,  ppc,
       86,  etcetera.   If the target architecture is not specified then the default architecture of arm will be
       used.

       The -T <toolset> option can be used to set the directory location of  the  toolset.   Both  absolute  and
       relative  paths  are  valid.  Relative  paths  use  GHS_TOOLSET_ROOT  as  the root. If the toolset is not
       specified then the latest toolset found in GHS_TOOLSET_ROOT will be used.

       Cache variables that are used for toolset and target system customization:

       • GHS_TARGET_PLATFORM
         Defaults to integrity.
         Usual values are integrity, threadx, uvelosity, velosity,
         vxworks, standalone.

       • GHS_PRIMARY_TARGET
         Sets primaryTarget entry in project file.
         Defaults to <arch>_<GHS_TARGET_PLATFORM>.tgt.

       • GHS_TOOLSET_ROOT
         Root path for toolset searches.
         Defaults to C:/ghs in Windows or /usr/ghs in Linux.

       • GHS_OS_ROOT
         Root path for RTOS searches.
         Defaults to C:/ghs in Windows or /usr/ghs in Linux.

       • GHS_OS_DIR and GHS_OS_DIR_OPTION
         Sets -os_dir entry in project file.
         Defaults to latest platform OS installation at GHS_OS_ROOT.  Set this value if
         a specific RTOS is to be used.
         GHS_OS_DIR_OPTION default value is -os_dir.

       • GHS_BSP_NAME
         Sets -bsp entry in project file.
         Defaults to sim<arch> for integrity platforms.

       Customizations are available through the following cache variables:

       • GHS_CUSTOMIZATIONGHS_GPJ_MACROS

       The following properties are available:

       • GHS_INTEGRITY_APPGHS_NO_SOURCE_GROUP_FILE

       NOTE:
          This generator is deemed experimental as of CMake 3.16.3 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 5.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 CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES variable may be set to ON  to
       exclude  any files which are located outside of the project root directory.  The appropriate make program
       can build the project through the default all target.  An 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 behavior from  projects  to  targets  as  the  basis  for  project  files.   The
       appropriate make program can build the project through the default all target.  An 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
       all target.  An 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.

   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  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 all target.  An 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.

       2000-2022 Kitware, Inc. and Contributors