CMakePushCheckState

此模組定義了三個巨集:CMAKE_PUSH_CHECK_STATE()CMAKE_POP_CHECK_STATE()CMAKE_RESET_CHECK_STATE()。這些巨集可用於儲存、還原和重置(即清除內容)變數 CMAKE_REQUIRED_FLAGSCMAKE_REQUIRED_DEFINITIONSCMAKE_REQUIRED_LINK_OPTIONSCMAKE_REQUIRED_LIBRARIESCMAKE_REQUIRED_LINK_DIRECTORIESCMAKE_REQUIRED_INCLUDESCMAKE_EXTRA_INCLUDE_FILES 的狀態,這些變數由 CMake 附帶的各種 Check 檔案使用,例如 check_function_exists() 等。變數內容會被推送到堆疊中,並支援多次推送。這在 Find 模組中執行此類測試時很有用,因為它們必須被設定,但在 Find 模組執行後,它們應該與之前的值相同。

CMAKE_PUSH_CHECK_STATE() 巨集接收可選參數 RESET。無論是否指定,CMAKE_PUSH_CHECK_STATE() 都會將所有 CMAKE_REQUIRED_* 變數設定為空值,與呼叫 CMAKE_RESET_CHECK_STATE() 的效果相同。

用法

cmake_push_check_state(RESET)
set(CMAKE_REQUIRED_DEFINITIONS -DSOME_MORE_DEF)
check_function_exists(...)
cmake_reset_check_state()
set(CMAKE_REQUIRED_DEFINITIONS -DANOTHER_DEF)
check_function_exists(...)
cmake_pop_check_state()