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