CMAKE_FIND_PACKAGE_SORT_ORDER — CMake 3.20.3 Documentation

# CMAKE_FIND_PACKAGE_SORT_ORDER

New in version 3.7.

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

`NONE`

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

`NAME`

  Sort packages lexicographically before selecting one.

`NATURAL`

  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`.

    set(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL)
    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).