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 16 INCLUDE(CheckCXXSourceCompiles) 17 18 MACRO (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} 26 int 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 35 ENDMACRO (CHECK_STRUCT_MEMBER) 36 37