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()