CheckStructHasMember

检查给定的结构或类是否具有指定的成员变量

CHECK_STRUCT_HAS_MEMBER
CHECK_STRUCT_HAS_MEMBER(<struct> <member> <header> <variable>
                        [LANGUAGE <language>])
<struct> - the name of the struct or class you are interested in
<member> - the member which existence you want to check
<header> - the header(s) where the prototype should be declared
<variable> - variable to store the result
<language> - the compiler to use (C or CXX)

可以在调用此宏之前设置以下变量以修改检查运行方式

CMAKE_REQUIRED_FLAGS

传递给编译器的其他标志的字符串。该字符串必须以空格分隔——;-list不起作用。 CMAKE_<LANG>_FLAGS 的内容及其关联的特定配置变量在 CMAKE_REQUIRED_FLAGS 的内容之前自动添加到编译器命令。

CMAKE_REQUIRED_DEFINITIONS

;-list 编译器定义的形式为 -DFOO-DFOO=bar。还将自动添加为 <resultVar> 指定的名称定义。

CMAKE_REQUIRED_INCLUDES

传递给编译器的头搜索路径的 ;-list。这些将是唯一使用的头搜索路径—— INCLUDE_DIRECTORIES 目录属性的内容将被忽略。

CMAKE_REQUIRED_LINK_OPTIONS

在版本 3.14 中添加。

;-list 添加到链接命令的选项(有关详细信息,请参见 try_compile())。

CMAKE_REQUIRED_LIBRARIES

;-list 添加到链接命令的库。这些可以是系统库的名称,也可以是 导入目标(有关详细信息,请参见 try_compile())。

CMAKE_REQUIRED_LINK_DIRECTORIES

在版本 3.31 中添加。

传递给链接器的库搜索路径的 ;-list(有关详细信息,请参见 try_compile())。

CMAKE_REQUIRED_QUIET

在版本 3.1 中添加。

如果此变量的值为布尔真值,将禁止所有与检查关联的状态消息。

示例

CHECK_STRUCT_HAS_MEMBER("struct timeval" tv_sec sys/select.h
                        HAVE_TIMEVAL_TV_SEC LANGUAGE C)