mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-12 17:19:05 -05:00
FindOpenMP: Update documentation
- Added intro code block showing how to use this module. - Added version when imported targets were introduced. - Added examples section. - Updated and synced the module documentation with other similar find modules.
This commit is contained in:
+72
-29
@@ -5,17 +5,59 @@
|
||||
FindOpenMP
|
||||
----------
|
||||
|
||||
Finds Open Multi-Processing (OpenMP) support.
|
||||
Finds Open Multi-Processing (OpenMP) support in a compiler:
|
||||
|
||||
This module can be used to detect OpenMP support in a compiler. If
|
||||
the compiler supports OpenMP, the flags required to compile with
|
||||
OpenMP support are returned in variables for the different languages.
|
||||
The variables may be empty if the compiler does not need a special
|
||||
flag to support OpenMP.
|
||||
.. code-block:: cmake
|
||||
|
||||
find_package(OpenMP [<version>] [COMPONENTS <components>...] [...])
|
||||
|
||||
If the compiler supports OpenMP, the flags required to compile with OpenMP
|
||||
support are returned in variables for the different languages. The variables
|
||||
may be empty if the compiler does not need a special flag to support OpenMP.
|
||||
|
||||
.. versionadded:: 3.5
|
||||
Clang support.
|
||||
|
||||
Components
|
||||
^^^^^^^^^^
|
||||
|
||||
This module supports components that can be specified using the standard
|
||||
syntax:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
find_package(OpenMP [COMPONENTS <components>...])
|
||||
|
||||
Each of these components controls the various languages to search OpenMP
|
||||
support for. The following components are exposed:
|
||||
|
||||
``C``
|
||||
.. versionadded:: 3.10
|
||||
|
||||
``CXX``
|
||||
.. versionadded:: 3.10
|
||||
|
||||
``Fortran``
|
||||
.. versionadded:: 3.10
|
||||
|
||||
``CUDA``
|
||||
.. versionadded:: 3.31
|
||||
|
||||
The ``CUDA`` language component is supported when using a CUDA compiler
|
||||
that supports OpenMP on the host.
|
||||
|
||||
If no components are specified, module checks for all of them automatically.
|
||||
|
||||
Imported Targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module provides the following :ref:`Imported Targets`:
|
||||
|
||||
``OpenMP::OpenMP_<lang>``
|
||||
.. versionadded:: 3.9
|
||||
|
||||
Target encapsulating the OpenMP usage requirements for language ``<lang>``.
|
||||
|
||||
Input Variables
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -33,25 +75,17 @@ The following variables may be set to influence this module's behavior:
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
.. versionadded:: 3.10
|
||||
The module exposes the components ``C``, ``CXX``, and ``Fortran``.
|
||||
Each of these controls the various languages to search OpenMP support for.
|
||||
|
||||
.. versionadded:: 3.31
|
||||
The ``CUDA`` language component is supported when using a CUDA compiler
|
||||
that supports OpenMP on the host.
|
||||
|
||||
Depending on the enabled components the following variables will be set:
|
||||
This module defines the following variables:
|
||||
|
||||
``OpenMP_FOUND``
|
||||
Variable indicating that OpenMP flags for all requested languages have been found.
|
||||
If no components are specified, this is true if OpenMP settings for all enabled languages
|
||||
were detected.
|
||||
Boolean variable indicating that OpenMP flags for all requested languages
|
||||
have been found. If no components are specified, this is true if OpenMP
|
||||
settings for all enabled languages were detected.
|
||||
``OpenMP_VERSION``
|
||||
Minimal version of the OpenMP standard detected among the requested languages,
|
||||
or all enabled languages if no components were specified.
|
||||
Minimal version of the OpenMP standard detected among the requested
|
||||
languages, or all enabled languages if no components were specified.
|
||||
|
||||
This module will set the following variables per language in your
|
||||
This module will set the following variables per language in the
|
||||
project, where ``<lang>`` is one of C, CXX, CUDA, or Fortran:
|
||||
|
||||
``OpenMP_<lang>_FOUND``
|
||||
@@ -66,23 +100,21 @@ For linking with OpenMP code written in ``<lang>``, the following
|
||||
variables are provided:
|
||||
|
||||
``OpenMP_<lang>_LIB_NAMES``
|
||||
:ref:`;-list <CMake Language Lists>` of libraries for OpenMP programs for ``<lang>``.
|
||||
:ref:`semicolon-separated list <CMake Language Lists>` of libraries for
|
||||
OpenMP programs for ``<lang>``.
|
||||
``OpenMP_<libname>_LIBRARY``
|
||||
Location of the individual libraries needed for OpenMP support in ``<lang>``.
|
||||
Location of the individual libraries needed for OpenMP support in
|
||||
``<lang>``.
|
||||
``OpenMP_<lang>_LIBRARIES``
|
||||
A list of libraries needed to link with OpenMP code written in ``<lang>``.
|
||||
|
||||
Additionally, the module provides :prop_tgt:`IMPORTED` targets:
|
||||
|
||||
``OpenMP::OpenMP_<lang>``
|
||||
Target for using OpenMP from ``<lang>``.
|
||||
|
||||
Specifically for Fortran, the module sets the following variables:
|
||||
|
||||
``OpenMP_Fortran_HAVE_OMPLIB_HEADER``
|
||||
Boolean indicating if OpenMP is accessible through ``omp_lib.h``.
|
||||
``OpenMP_Fortran_HAVE_OMPLIB_MODULE``
|
||||
Boolean indicating if OpenMP is accessible through the ``omp_lib`` Fortran module.
|
||||
Boolean indicating if OpenMP is accessible through the ``omp_lib`` Fortran
|
||||
module.
|
||||
|
||||
The module will also try to provide the OpenMP version variables:
|
||||
|
||||
@@ -108,6 +140,17 @@ provided directly by setting the ``OpenMP_<lang>_INCLUDE_DIR`` cache variable.
|
||||
Note that this variable is an _input_ control to the module. Project code
|
||||
should use the ``OpenMP_<lang>_INCLUDE_DIRS`` _output_ variable if it needs
|
||||
to know what include directories are needed.
|
||||
|
||||
Examples
|
||||
^^^^^^^^
|
||||
|
||||
Finding OpenMP support and linking the imported target to a project target
|
||||
using the C language component:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
find_package(OpenMP)
|
||||
target_link_libraries(project_target PRIVATE OpenMP::OpenMP_C)
|
||||
#]=======================================================================]
|
||||
|
||||
cmake_policy(PUSH)
|
||||
|
||||
Reference in New Issue
Block a user