This page documents variables that are provided by CMake or have meaning to CMake when set by project code.

For general information on variables, see the Variables section in the cmake-language manual.


CMake reserves identifiers that:

  • begin with CMAKE_ (upper-, lower-, or mixed-case), or

  • begin with _CMAKE_ (upper-, lower-, or mixed-case), or

  • begin with _ followed by the name of any CMake Command.

Variables that Provide Information

Variables that Change Behavior

Variables that Describe the System

Variables that Control the Build

Variables for Languages

Variables for CTest

Variables for CPack

Variable Expansion Operators

Internal Variables

CMake has many internal variables. Most of them are undocumented. Some of them, however, were at some point described as normal variables, and therefore may be encountered in legacy code. They are subject to change, and not recommended for use in project code.