CMAKE_FIND_PACKAGE_SORT_ORDER

在版本 3.7 中添加。

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

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 之前测试) 来控制排序方向。