/CMake 3.19


New in version 3.16.

The project() command preserves leading zeros in version components.

When a VERSION <major>[.<minor>[.<patch>[.<tweak>]]]] argument is given to the project() command, it stores the version string in the PROJECT_VERSION variable and stores individual integer version components in PROJECT_VERSION_{MAJOR,MINOR,PATCH,TWEAK} variables (see policy CMP0048). CMake 3.15 and below dropped leading zeros from each component. CMake 3.16 and higher prefer to preserve leading zeros. This policy provides compatibility for projects that have not been updated to expect the new behavior.

The OLD behavior of this policy drops leading zeros in all components, e.g. such that version 1.07.06 becomes 1.7.6. The NEW behavior of this policy preserves the leading zeros in all components, such that version 1.07.06 remains unchanged.

This policy was introduced in CMake version 3.16. Unlike many policies, CMake version 3.19.0-rc3 does not warn when this policy is not set and simply uses the OLD behavior. Use the cmake_policy() command to set it to OLD or NEW explicitly.


The OLD behavior of a policy is deprecated by definition and may be removed in a future version of CMake.

© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.