CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>¶
於 3.22 版本新增。
此變數用於將 find_package()
呼叫變為 REQUIRED
。
專案中每個非 REQUIRED
的 find_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 模組的邏輯永遠不會被使用。