New in version 3.7.

The default order for sorting packages found using find_package(). It can assume one of the following values:


Default. No attempt is done to sort packages. The first valid package found will be selected.


Sort packages lexicographically before selecting one.


Sort packages using natural order (see strverscmp(3) manual), i.e. such that contiguous digits are compared as whole numbers.

Natural sorting can be employed to return the highest version when multiple versions of the same library are found by find_package(). For example suppose that the following libraries have been found:

  • libX-1.1.0

  • libX-1.2.9

  • libX-1.2.10

By setting NATURAL order we can select the one with the highest version number libX-1.2.10.

find_package(libX CONFIG)

The sort direction can be controlled using the CMAKE_FIND_PACKAGE_SORT_DIRECTION variable (by default decrescent, e.g. lib-B will be tested before lib-A).