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 之前測試)。