1# - Check if the given struct or class has the specified member variable 2# CHECK_STRUCT_MEMBER (STRUCT MEMBER HEADER VARIABLE) 3# 4# STRUCT - the name of the struct or class you are interested in 5# MEMBER - the member which existence you want to check 6# HEADER - the header(s) where the prototype should be declared 7# VARIABLE - variable to store the result 8# 9# The following variables may be set before calling this macro to 10# modify the way the check is run: 11# 12# CMAKE_REQUIRED_FLAGS = string of compile command line flags 13# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) 14# CMAKE_REQUIRED_INCLUDES = list of include directories 15 16INCLUDE(CheckCXXSourceCompiles) 17 18MACRO (CHECK_STRUCT_MEMBER _STRUCT _MEMBER _HEADER _RESULT) 19 SET(_INCLUDE_FILES) 20 FOREACH (it ${_HEADER}) 21 SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n") 22 ENDFOREACH (it) 23 24 SET(_CHECK_STRUCT_MEMBER_SOURCE_CODE " 25${_INCLUDE_FILES} 26int main() 27{ 28 ${_STRUCT}* tmp; 29 tmp->${_MEMBER}; 30 return 0; 31} 32") 33 CHECK_CXX_SOURCE_COMPILES("${_CHECK_STRUCT_MEMBER_SOURCE_CODE}" ${_RESULT}) 34 35ENDMACRO (CHECK_STRUCT_MEMBER) 36 37