1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-05-08 22:37:04 +08:00
CMake/Modules/TestCXXAcceptsFlag.cmake
Peter Kokot 1d72b4da10
TestCXXAcceptsFlag: Update documentation
- Also CheckCompilerFlag module suggested in the deprecation notice
- Lowercase style used for macro
- Descriptions extended
- Added examples
2025-03-24 16:42:14 +01:00

69 lines
2.0 KiB
CMake

# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
TestCXXAcceptsFlag
------------------
.. deprecated:: 3.0
This module should no longer be used. It has been superseded by the
:module:`CheckCXXCompilerFlag` module. As of CMake 3.19, the
:module:`CheckCompilerFlag` module is also available for checking flags across
multiple languages.
This module provides a macro to test whether the C++ (CXX) compiler supports
specific flags.
Macros
^^^^^^
.. command:: check_cxx_accepts_flag
Checks whether the CXX compiler accepts the specified flags:
.. code-block:: cmake
check_cxx_accepts_flag(<flags> <result-variable>)
``<flags>``
One or more compiler flags to test. For multiple flags, provide them as a
space-separated string.
``<result-variable>``
Name of an internal cache variable that stores the result. It is set to
boolean true if the compiler accepts the flags and false otherwise.
Examples
^^^^^^^^
Checking if the C++ compiler supports specific flags:
.. code-block:: cmake
include(TestCXXAcceptsFlag)
check_cxx_accepts_flag("-fno-common -fstack-clash-protection" HAVE_FLAGS)
Migrating to the :module:`CheckCompilerFlag` module:
.. code-block:: cmake
include(CheckCompilerFlag)
check_compiler_flag(CXX "-fno-common;-fstack-clash-protection" HAVE_FLAGS)
#]=======================================================================]
macro(CHECK_CXX_ACCEPTS_FLAG FLAGS VARIABLE)
if(NOT DEFINED ${VARIABLE})
message(CHECK_START "Checking to see if CXX compiler accepts flag ${FLAGS}")
try_compile(${VARIABLE}
SOURCES ${CMAKE_ROOT}/Modules/DummyCXXFile.cxx
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${FLAGS}
)
if(${VARIABLE})
message(CHECK_PASS "yes")
else()
message(CHECK_FAIL "no")
endif()
endif()
endmacro()