mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 02:08:27 +08:00

- Added intro code blocks showing how to include these modules.
- Used word "command" instead of "macro".
- Added examples sections.
- Updated and synced descriptions of commands and arguments.
- Added a rubric title for variables that affect the checks.
- Listed CMAKE_TRY_COMPILE_TARGET_TYPE variable in the rubric together
with CMAKE_REQUIRED_* variables.
- Added link to CheckCompilerFlag module in the target_compile_options()
docs.
- Used lowercase style for check_fortran_compiler_flag() command.
- Added a link to `$<COMPILE_LANGUAGE:languages>` generator expression
so it can be linked from other pages (See commit
2e37a20f02
for more info on the initial
style used).
- Fixed the GENEX_NOTE inclusion (starting with line after the 2nd line)
where part of the sentence was rendered in the output.
109 lines
3.4 KiB
CMake
109 lines
3.4 KiB
CMake
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
# file LICENSE.rst or https://cmake.org/licensing for details.
|
|
|
|
#[=======================================================================[.rst:
|
|
CheckCXXCompilerFlag
|
|
------------------------
|
|
|
|
This module provides a command to check whether the C++ compiler supports a
|
|
given flag.
|
|
|
|
Load this module in a CMake project with:
|
|
|
|
.. code-block:: cmake
|
|
|
|
include(CheckCXXCompilerFlag)
|
|
|
|
Commands
|
|
^^^^^^^^
|
|
|
|
This module provides the following command:
|
|
|
|
.. command:: check_cxx_compiler_flag
|
|
|
|
Checks once whether the C++ compiler supports a given flag:
|
|
|
|
.. code-block:: cmake
|
|
|
|
check_cxx_compiler_flag(<flag> <variable>)
|
|
|
|
This command checks once that the ``<flag>`` is accepted by the ``CXX``
|
|
compiler without producing a diagnostic message. Multiple flags can be
|
|
specified in one argument as a string using a :ref:`semicolon-separated
|
|
list <CMake Language Lists>`.
|
|
|
|
The result of the check is stored in the internal cache variable specified
|
|
by ``<variable>``, with boolean true for success and boolean false for
|
|
failure.
|
|
|
|
A successful result only indicates that the compiler did not report an
|
|
error when given the flag. Whether the flag has any effect, or the
|
|
intended one, is outside the scope of this module.
|
|
|
|
.. note::
|
|
|
|
Since the underlying :command:`try_compile` command also uses flags from
|
|
variables like :variable:`CMAKE_<LANG>_FLAGS`, unknown or unsupported
|
|
flags in those variables may result in a false negative for this check.
|
|
|
|
.. rubric:: Variables Affecting the Check
|
|
|
|
The following variables may be set before calling this command to modify
|
|
the way the check is run:
|
|
|
|
.. include:: /module/include/CMAKE_REQUIRED_FLAGS.rst
|
|
|
|
.. include:: /module/include/CMAKE_REQUIRED_DEFINITIONS.rst
|
|
|
|
.. include:: /module/include/CMAKE_REQUIRED_INCLUDES.rst
|
|
|
|
.. include:: /module/include/CMAKE_REQUIRED_LINK_OPTIONS.rst
|
|
|
|
.. include:: /module/include/CMAKE_REQUIRED_LIBRARIES.rst
|
|
|
|
.. include:: /module/include/CMAKE_REQUIRED_LINK_DIRECTORIES.rst
|
|
|
|
.. include:: /module/include/CMAKE_REQUIRED_QUIET.rst
|
|
|
|
.. include:: /module/include/CMAKE_TRY_COMPILE_TARGET_TYPE.rst
|
|
|
|
Examples
|
|
^^^^^^^^
|
|
|
|
The following example demonstrates how to use this module to check
|
|
the C++ compiler flag ``-fsycl``. The result of the check is stored in the
|
|
internal cache variable ``HAVE_FSYCL_FLAG``, and the flag is conditionally
|
|
enabled using the :command:`target_compile_options` command. The
|
|
:genex:`$<COMPILE_LANGUAGE:...> <COMPILE_LANGUAGE:languages>` generator
|
|
expression ensures that the flag is added only to ``CXX`` source files.
|
|
|
|
.. code-block:: cmake
|
|
|
|
include(CheckCXXCompilerFlag)
|
|
check_cxx_compiler_flag(-fsycl HAVE_FSYCL_FLAG)
|
|
|
|
if(HAVE_FSYCL_FLAG)
|
|
target_compile_options(
|
|
example
|
|
PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-fsycl>
|
|
)
|
|
endif()
|
|
|
|
See Also
|
|
^^^^^^^^
|
|
|
|
* The :module:`CheckCompilerFlag` module for a more general command to check
|
|
whether a compiler flag is supported.
|
|
#]=======================================================================]
|
|
|
|
include_guard(GLOBAL)
|
|
include(Internal/CheckCompilerFlag)
|
|
|
|
macro (CHECK_CXX_COMPILER_FLAG _FLAG _RESULT)
|
|
cmake_check_compiler_flag(CXX "${_FLAG}" ${_RESULT})
|
|
endmacro ()
|
|
|
|
# FIXME(#24994): The following module is included only for compatibility
|
|
# with projects that accidentally relied on it with CMake 3.26 and below.
|
|
include(CheckCXXSourceCompiles)
|