| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- # 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 ``<sstream>`` 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 ``<sstream>`` header is available. It
- will be set to value ``0`` if ``<sstream>`` is available (``C++ 98`` and
- newer), and to value ``1`` if ``<sstream>`` is missing (``ANSI C++``).
- ``CMAKE_HAS_ANSI_STRING_STREAM``
- A cache variable that is the opposite of ``CMAKE_NO_ANSI_STRING_STREAM``
- (true if ``<sstream>`` is available and false if ``<sstream>`` is missing).
- .. note::
- The ``<sstream>`` header was formally introduced in the ``C++ 98`` standard,
- making this check obsolete for modern compilers.
- Examples
- ^^^^^^^^
- Including this module will check for ``<sstream>`` 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 <sstream>
- #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()
|