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
用於
<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
,其中 yyyy
和 mm
代表由 <lang>
編譯器實作的 OpenMP 規格的年份和月份。
對於某些編譯器,可能需要新增標頭搜尋路徑以尋找相關的 OpenMP 標頭。此位置可能是特定於語言的。 在需要此位置的情況下,模組可能會嘗試尋找該位置,但可以透過設定 OpenMP_<lang>_INCLUDE_DIR
快取變數直接提供。 請注意,此變數是模組的_輸入_控制項。 專案程式碼應使用 OpenMP_<lang>_INCLUDE_DIRS
_輸出_變數(如果需要知道需要哪些包含目錄)。