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

用於 <lang> 的 OpenMP 程式的程式庫的 ;-list

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 快取變數直接提供。 請注意,此變數是模組的_輸入_控制項。 專案程式碼應使用 OpenMP_<lang>_INCLUDE_DIRS _輸出_變數(如果需要知道需要哪些包含目錄)。