CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>

在 3.22 版本中新增。

用於使 find_package() 呼叫成為 REQUIRED 的變數。

專案中每個非 REQUIREDfind_package() 呼叫,都可以透過將變數 CMAKE_REQUIRE_FIND_PACKAGE_<PackageName> 設定為 TRUE 來轉變為 REQUIRED。這可以用於斷言關於建置環境的假設,並確保在假設不成立時,建置會提早失敗。

請注意,將此變數設定為 true 會破壞一些常用的模式。有時會使用對 find_package() 的多次呼叫,以取得與預設不同的搜尋順序。例如,專案可以強制先檢查特定套件的已知路徑,然後再搜尋任何其他預設搜尋路徑

find_package(something PATHS /some/local/path NO_DEFAULT_PATH)
find_package(something)

在上述情況中,第一個呼叫會在特定目錄中尋找 something 套件。如果 CMAKE_REQUIRE_FIND_PACKAGE_something 設定為 true,則此第一個呼叫必須成功,否則會發生致命錯誤。第二個呼叫永遠沒有機會提供退回使用預設搜尋位置。

CMake 自己的某些 Find 模組也使用類似的模式,先搜尋 config 套件

find_package(something CONFIG QUIET)
if(NOT something_FOUND)
  # Fall back to searching using typical Find module logic...
endif()

同樣地,如果 CMAKE_REQUIRE_FIND_PACKAGE_something 為 true,則第一個呼叫必須成功。這實際上表示必須為相依性找到 config 套件,並且永遠不會使用 Find 模組邏輯。

另請參閱 CMAKE_DISABLE_FIND_PACKAGE_<PackageName> 變數。