CheckPrototypeDefinition¶
檢查一個 C
函數是否具有預期的原型。
- check_prototype_definition¶
check_prototype_definition(<function> <prototype> <return> <headers> <variable>)
<function>
正在檢查其原型的函數名稱。
<prototype>
函數的預期原型,以字串形式提供。
<return>
函數的回傳值。這將在產生的測試程式的函數定義主體中用作回傳值,以驗證函數的回傳類型是否與預期類型相符。
<headers>
檢查函數原型所需的標頭檔名稱的分號分隔列表。
<variable>
用於儲存檢查結果的變數名稱。此變數將建立為內部快取變數。
此命令產生一個測試程式並驗證它在沒有錯誤的情況下建置。產生的測試程式包含指定的
<headers>
,定義一個具有給定文字<prototype>
和<return>
值的函數,然後使用指定的<function>
。簡化的測試程式可以說明為#include <headers> // ... <prototype> { return <return>; } int main(...) { ...<function>()... }
可以在呼叫此函數之前設定以下變數,以修改檢查的執行方式
CMAKE_REQUIRED_FLAGS
要傳遞給編譯器的其他旗標字串。字串必須以空格分隔——;-list 將不起作用。
CMAKE_<LANG>_FLAGS
及其相關的特定於組態的變數的內容會自動新增到編譯器命令中,然後才是CMAKE_REQUIRED_FLAGS
的內容。
CMAKE_REQUIRED_DEFINITIONS
形式為
-DFOO
或-DFOO=bar
的編譯器定義的 ;-list。 也會自動新增<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,則會抑制與檢查關聯的所有狀態訊息。
範例¶
檢查 Solaris/illumos 系統上的 getpwent_r()
函數是否具有預期的原型
include(CheckPrototypeDefinition)
check_prototype_definition(
getpwent_r
"struct passwd *getpwent_r(struct passwd *src, char *buf, int buflen)"
"NULL"
"unistd.h;pwd.h"
HAVE_SOLARIS_GETPWENT_R
)