# Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file LICENSE.rst or https://cmake.org/licensing for details. #[=======================================================================[.rst: TestForSSTREAM -------------- This module checks whether the C++ standard header ```` exists and functions correctly. In early versions of C++ (pre-C++98), this header was not formally standardized and may not have been available. This module defines the following cache variables: ``CMAKE_NO_ANSI_STRING_STREAM`` A cache variable indicating whether the ```` header is available. It will be set to value ``0`` if ```` is available (``C++ 98`` and newer), and to value ``1`` if ```` is missing (``ANSI C++``). ``CMAKE_HAS_ANSI_STRING_STREAM`` A cache variable that is the opposite of ``CMAKE_NO_ANSI_STRING_STREAM`` (true if ```` is available and false if ```` is missing). .. note:: The ```` header was formally introduced in the ``C++ 98`` standard, making this check obsolete for modern compilers. Examples ^^^^^^^^ Including this module will check for ```` support and define the ``CMAKE_NO_ANSI_STRING_STREAM`` cache variable: .. code-block:: cmake include(TestForSSTREAM) file( CONFIGURE OUTPUT config.h CONTENT "#cmakedefine CMAKE_NO_ANSI_STRING_STREAM" ) Then it can be used in a C++ program: .. code-block:: c++ #include "config.h" #ifndef CMAKE_NO_ANSI_STRING_STREAM # include #endif int main() { ... } #]=======================================================================] if(NOT DEFINED CMAKE_HAS_ANSI_STRING_STREAM) message(CHECK_START "Check for sstream") try_compile(CMAKE_HAS_ANSI_STRING_STREAM SOURCES ${CMAKE_ROOT}/Modules/TestForSSTREAM.cxx ) if (CMAKE_HAS_ANSI_STRING_STREAM) message(CHECK_PASS "found") set (CMAKE_NO_ANSI_STRING_STREAM 0 CACHE INTERNAL "Does the compiler support sstream") else () message(CHECK_FAIL "not found") set (CMAKE_NO_ANSI_STRING_STREAM 1 CACHE INTERNAL "Does the compiler support sstream") endif () endif()