CheckSourceRuns¶
在版本 3.19 加入。
檢查給定的原始碼是否編譯並連結成可執行檔,並且隨後可以執行。
- check_source_runs¶
check_source_runs(<lang> <code> <resultVar> [SRC_EXT <extension>])
單次檢查在
<code>
中提供的<lang>
原始碼是否可以被建置、連結為可執行檔,然後執行。<code>
必須至少包含一個main()
函數,或者在 Fortran 中是一個program
。結果儲存在由
<resultVar>
指定的內部快取變數中。如果程式碼建置並以退出碼0
執行,則成功以布林值true
表示。建置或執行失敗以布林值false
表示,例如空字串或錯誤訊息。預設情況下,測試原始碼檔案將被賦予一個與請求的語言相符的副檔名。
SRC_EXT
選項可以用來覆蓋這個設定,改用.<extension>
。<code>
必須包含一個有效的 main 程式。例如check_source_runs(C "#include <stdlib.h> #include <stdnoreturn.h> noreturn void f(){ exit(0); } int main(void) { f(); return 1; }" HAVE_NORETURN) check_source_runs(Fortran "program test real :: x[*] call co_sum(x) end program" HAVE_COARRAY)
編譯和連結命令可以透過在呼叫
check_source_runs()
之前設定以下任何變數來影響
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,則所有與檢查相關的狀態訊息都將被抑制。