CMAKE_FIND_PACKAGE_SORT_ORDER

3.7 版本中新增。

版本 4.2 中已更改: 默认排序顺序已从 NONE 更改为 NATURAL

使用 find_package() 找到的包含 glob 表达式的搜索路径所匹配的目录的默认排序顺序。它可以取以下值之一:

NONE

不进行排序。将选择找到的第一个有效包。

名称

在搜索之前按字典顺序排序目录。

NATURAL

默认。使用自然顺序对目录进行排序(请参阅 strverscmp(3) 手册),即连续的数字被视为整数进行比较。

默认情况下,自然排序用于在 find_package() 可以找到同一库的多个版本时,返回最高版本。例如,假设磁盘上存在以下库的包配置文件,目录名称相同,所有这些目录都位于同一父目录下:

  • libX-1.1.0

  • libX-1.2.9

  • libX-1.2.10

默认的 NATURAL 顺序将选择版本号最高的那个,即 libX-1.2.10

排序方向可以通过 CMAKE_FIND_PACKAGE_SORT_DIRECTION 变量进行控制(默认降序,即 libX-1.2 将在 libX-1.0 之前进行测试,而 lib-B 将在 lib-A 之前进行测试)。