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 模組也使用類似的模式,先搜尋 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 模組邏輯。