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)