Most CMake policies default to “OLD” behavior compatible with prior versions of CMake. cmake_minimum_required(VERSION min…max) automatically sets all the CMake policies to “new” through the “max” CMake version, limited by the user’s CMake version.
Example: project with
cmake_minimum_required(VERSION 3.21...3.26) implicitly sets to
NEW all CMake policies CMP0143 and older for users with CMake ≥ 3.26.
A user with CMake 3.22 will get NEW for policies CMP0128 and older.
A user with CMake 3.20 will get an error due to the minimum version given as 3.21.
New versions of CMake don’t get the benefits of new behaviors until specifying the new behavior is OK via
cmake_minimum_required(VERSION min...max) maximum version number.
CMake gradually deprecates old policies, such that warnings emit when CMakeLists.txt
cmake_minimum_required() sets the policy to OLD.
For example, CMake 3.28
deprecated CMake 3.20 CMP0120