FindOpenMP¶
尋找 Open Multi-Processing (OpenMP) 支援。
此模組可用於偵測編譯器中的 OpenMP 支援。如果編譯器支援 OpenMP,則使用 OpenMP 支援進行編譯所需的旗標會以不同語言的變數傳回。如果編譯器不需要特殊的旗標來支援 OpenMP,則變數可能為空。
在 3.5 版本中新增: Clang 支援。
輸入變數¶
可以設定以下變數來影響此模組的行為
OpenMP_RUNTIME_MSVC
在 3.30 版本中新增。
在使用 MSVC 編譯時指定OpenMP 執行階段。 如果設定為非空值,例如
experimental
或llvm
,則會將其作為-openmp:
旗標的值傳遞。
結果變數¶
在 3.10 版本中新增: 此模組公開 C
、CXX
和 Fortran
等元件。 這些元件各自控制要搜尋 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
,其中 yyyy
和 mm
代表 <lang>
編譯器實作的 OpenMP 規格的年份和月份。
對於某些編譯器,可能需要新增標頭搜尋路徑才能找到相關的 OpenMP 標頭。此位置可能特定於語言。如果需要這樣做,模組可能會嘗試尋找位置,但可以透過設定 OpenMP_<lang>_INCLUDE_DIR
快取變數直接提供。 請注意,此變數是模組的 _輸入_ 控制項。專案程式碼如果需要知道需要哪些 include 目錄,則應使用 OpenMP_<lang>_INCLUDE_DIRS
_輸出_ 變數。