Files
CMake/Modules/TestCXXAcceptsFlag.cmake
Peter Kokot b1ec2b36a8 TestCXXAcceptsFlag: Sync documentation
- Added intro code block showing how to use this module.
- Renamed "macros" to "commands".
2025-08-09 03:20:20 +02:00

77 lines
2.1 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 command to test whether the C++ (CXX) compiler supports
specific flags.
Load this module in a CMake project with:
.. code-block:: cmake
include(TestCXXAcceptsFlag)
Commands
^^^^^^^^
This module provides the following command:
.. 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()