CMAKE_FIND_PACKAGE_SORT_ORDER

在 3.7 版本加入.

使用 find_package() 找到的包排序的默认顺序。它可以采用以下值之一:

没有

默认。不会尝试对包进行排序。将选择找到的第一个有效包。

名字

在选择一个包之前按字典顺序对包进行排序。

自然

使用自然顺序对包进行排序(参见 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 之前测试)。