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

要傳遞給編譯器的額外旗標字串。該字串必須以空格分隔 - ; 列表將不起作用。 CMAKE_<LANG>_FLAGS及其相關的特定組態變數的內容,會自動新增到編譯器指令中,然後才會加入 CMAKE_REQUIRED_FLAGS 的內容。

CMAKE_REQUIRED_DEFINITIONS

一個 ; 列表,包含編譯器定義,格式為 -DFOO-DFOO=bar。也會自動加入由 <resultVar> 指定的名稱的定義。

CMAKE_REQUIRED_INCLUDES

一個 ; 列表,包含要傳遞給編譯器的標頭搜尋路徑。這些將是唯一使用的標頭搜尋路徑 - INCLUDE_DIRECTORIES 目錄屬性的內容將被忽略。

CMAKE_REQUIRED_LINK_OPTIONS

在版本 3.14 中新增。

一個 ; 列表,包含要新增到連結指令的選項 (請參閱 try_compile() 以取得更多詳細資訊)。

CMAKE_REQUIRED_LIBRARIES

一個 ; 列表,包含要新增到連結指令的程式庫。這些可以是系統程式庫的名稱,也可以是匯入目標 (請參閱 try_compile() 以取得更多詳細資訊)。

CMAKE_REQUIRED_LINK_DIRECTORIES

在版本 3.31 中新增。

一個 ; 列表,包含要傳遞給連結器的程式庫搜尋路徑 (請參閱 try_compile() 以取得更多詳細資訊)。

CMAKE_REQUIRED_QUIET

在版本 3.1 中新增。

如果此變數的布林值為 true,則將會隱藏與檢查相關的所有狀態訊息。

範例

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