CMAKE_FIND_PACKAGE_SORT_ORDER
Добавлен в версию 3.7.
Указание порядка сортировки каталогов, соответствующих пути поиска, содержащему выражение glob, найденное с помощью 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–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.31/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.html