FindOpenMP

尋找 Open Multi-Processing (OpenMP) 支援。

此模組可用於偵測編譯器中的 OpenMP 支援。如果編譯器支援 OpenMP,則使用 OpenMP 支援進行編譯所需的旗標會以不同語言的變數傳回。如果編譯器不需要特殊的旗標來支援 OpenMP,則變數可能為空。

在 3.5 版本中新增: Clang 支援。

輸入變數

可以設定以下變數來影響此模組的行為

OpenMP_RUNTIME_MSVC

在 3.30 版本中新增。

在使用 MSVC 編譯時指定OpenMP 執行階段。 如果設定為非空值,例如 experimentalllvm,則會將其作為 -openmp: 旗標的值傳遞。

結果變數

在 3.10 版本中新增: 此模組公開 CCXXFortran 等元件。 這些元件各自控制要搜尋 OpenMP 支援的各種語言。

在 3.31 版本中新增: 當使用支援主機上 OpenMP 的 CUDA 編譯器時,支援 CUDA 語言元件。

根據啟用的元件,將會設定以下變數

OpenMP_FOUND

指示已找到所有請求語言的 OpenMP 旗標的變數。如果未指定任何元件,則如果偵測到所有已啟用語言的 OpenMP 設定,則此值為 true。

OpenMP_VERSION

在請求的語言中偵測到的 OpenMP 標準的最小版本,如果未指定任何元件,則為所有已啟用語言的最小版本。

此模組會在您的專案中為每種語言設定以下變數,其中 <lang> 是 C、CXX、CUDA 或 Fortran 其中之一

OpenMP_<lang>_FOUND

指示是否偵測到 <lang> 的 OpenMP 支援的變數。

OpenMP_<lang>_FLAGS

<lang> 的 OpenMP 編譯器旗標,以空格分隔。

OpenMP_<lang>_INCLUDE_DIRS

使用 OpenMP 時必須新增到 <lang> 的標頭搜尋路徑的目錄。

為了連結以 <lang> 撰寫的 OpenMP 程式碼,提供了以下變數

OpenMP_<lang>_LIB_NAMES

;-list,用於 <lang> 的 OpenMP 程式的程式庫清單。

OpenMP_<libname>_LIBRARY

<lang> 中 OpenMP 支援所需的個別程式庫位置。

OpenMP_<lang>_LIBRARIES

連結以 <lang> 撰寫的 OpenMP 程式碼所需的程式庫清單。

此外,此模組提供 IMPORTED 目標

OpenMP::OpenMP_<lang>

<lang> 使用 OpenMP 的目標。

特別針對 Fortran,此模組設定以下變數

OpenMP_Fortran_HAVE_OMPLIB_HEADER

布林值,指示是否可透過 omp_lib.h 存取 OpenMP。

OpenMP_Fortran_HAVE_OMPLIB_MODULE

布林值,指示是否可透過 omp_lib Fortran 模組存取 OpenMP。

此模組也會嘗試提供 OpenMP 版本變數

OpenMP_<lang>_SPEC_DATE

在 3.7 版本中新增。

<lang> 編譯器實作的 OpenMP 規格日期。

OpenMP_<lang>_VERSION_MAJOR

<lang> 編譯器實作的 OpenMP 主要版本。

OpenMP_<lang>_VERSION_MINOR

<lang> 編譯器實作的 OpenMP 次要版本。

OpenMP_<lang>_VERSION

<lang> 編譯器實作的 OpenMP 版本。

規格日期的格式如 OpenMP 標準中所指定:yyyymm,其中 yyyymm 代表 <lang> 編譯器實作的 OpenMP 規格的年份和月份。

對於某些編譯器,可能需要新增標頭搜尋路徑才能找到相關的 OpenMP 標頭。此位置可能特定於語言。如果需要這樣做,模組可能會嘗試尋找位置,但可以透過設定 OpenMP_<lang>_INCLUDE_DIR 快取變數直接提供。 請注意,此變數是模組的 _輸入_ 控制項。專案程式碼如果需要知道需要哪些 include 目錄,則應使用 OpenMP_<lang>_INCLUDE_DIRS _輸出_ 變數。