CheckFunctionExists¶
檢查系統函式庫是否可連結 C 函式一次。
- check_function_exists¶
check_function_exists(<function> <variable>)
檢查系統函式庫是否提供
<function>
,並將結果儲存在內部快取變數<variable>
中。
在呼叫此巨集之前,可以設定以下變數來修改檢查的執行方式
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 版本中新增。
如果此變數的布林值為 true,則會隱藏與檢查相關的所有狀態訊息。
注意
基於以下原因,建議使用 CheckSymbolExists
或 CheckSourceCompiles
,而不是此模組
check_function_exists()
無法偵測標頭中內聯或指定為巨集的函式。check_function_exists()
因為呼叫慣例不符,無法偵測 Win32 API 的 32 位元版本中的任何內容。check_function_exists()
只驗證連結,不驗證函式是否在系統標頭中宣告。