CMAKE_FIND_PACKAGE_SORT_ORDER
Порядок сортировки пакетов, найденных с помощью find_package(). Он может принимать одно из следующих значений:
-
NONE - По умолчанию. Пакеты не сортируются. Выбирается первый найденный пакет.
-
NAME - Сортировка пакетов лексикографически перед выбором одного.
-
NATURAL - Сортировка пакетов по естественному порядку (см.
strverscmp(3)руководство), т.е. таким образом, что смежные цифры сравниваются как целые числа.
Естественная сортировка может быть использована для возвращения самой высокой версии, когда find_package() находит несколько версий одной и той же библиотеки. Например, предположим, что были найдены следующие библиотеки:
- libX-1.1.0
- libX-1.2.9
- libX-1.2.10
Установив NATURAL порядок, мы можем выбрать ту, у которой самый высокий номер версии libX-1.2.10.
set(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL) find_package(libX CONFIG)
Направление сортировки можно контролировать с помощью переменной CMAKE_FIND_PACKAGE_SORT_DIRECTION (по умолчанию убывающий, т.е. lib-B будет проверяться раньше lib-A).
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.9/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.html