CMAKE_FIND_PACKAGE_SORT_ORDER¶
3.7 版本中新增。
使用 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
。
set(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL)
find_package(libX CONFIG)
排序方向可以通过 CMAKE_FIND_PACKAGE_SORT_DIRECTION
变量进行控制(默认为降序,例如 lib-B 将在 lib-A 之前进行测试)。