CMAKE_FIND_PACKAGE_SORT_ORDER — CMake 3.15.0 Documentation

# CMAKE_FIND_PACKAGE_SORT_ORDER

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