mirror of
https://github.com/Kitware/CMake.git
synced 2025-05-08 22:37:04 +08:00

- Also CheckCompilerFlag module suggested in the deprecation notice - Lowercase style used for macro - Descriptions extended - Added examples
69 lines
2.0 KiB
CMake
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()
|