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 模組也使用類似的模式來首先搜尋組態套件。

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,則第一個呼叫必須成功。這實際上表示必須為相依性找到組態套件,並且 Find 模組的邏輯永遠不會被使用。

另請參閱 CMAKE_DISABLE_FIND_PACKAGE_<PackageName> 變數。