zibbr

Random 3d and p2p stuff that was originally the beginnings of an overly ambitious p2p virtual world thingy
git clone https://code.literati.org/zibbr.git
Log | Files | Refs

CheckStructMember.cmake (1298B)


      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 # Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org>
     17 #
     18 # Redistribution and use is allowed according to the terms of the BSD license.
     19 # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
     20 
     21 MACRO (CHECK_STRUCT_MEMBER _STRUCT _MEMBER _HEADER _RESULT)
     22    SET(_INCLUDE_FILES)
     23    FOREACH (it ${_HEADER})
     24       SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n")
     25    ENDFOREACH (it)
     26 
     27    SET(_CHECK_STRUCT_MEMBER_SOURCE_CODE "
     28 ${_INCLUDE_FILES}
     29 int main()
     30 {
     31    ${_STRUCT}* tmp;
     32    tmp->${_MEMBER};
     33   return 0;
     34 }
     35 ")
     36 
     37    CHECK_CXX_SOURCE_COMPILES("${_CHECK_STRUCT_MEMBER_SOURCE_CODE}" ${_RESULT})
     38 
     39 ENDMACRO (CHECK_STRUCT_MEMBER)
     40