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 之前进行测试)。