| CMAKE_FIND_PACKAGE_SORT_ORDER |
| ----------------------------- |
| |
| .. versionadded:: 3.7 |
| |
| The default order for sorting packages found using :command:`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 :command:`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``. |
| |
| .. code-block:: cmake |
| |
| set(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL) |
| find_package(libX CONFIG) |
| |
| The sort direction can be controlled using the |
| :variable:`CMAKE_FIND_PACKAGE_SORT_DIRECTION` variable |
| (by default decrescent, e.g. lib-B will be tested before lib-A). |