| # 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() |