# Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file LICENSE.rst or https://cmake.org/licensing for details. #[=======================================================================[.rst: TestForANSIStreamHeaders ------------------------ This module checks whether the ``CXX`` compiler supports standard library headers without the ``.h`` extension (e.g. ````). Load this module in a CMake project with: .. code-block:: cmake include(TestForANSIStreamHeaders) Early versions of C++ (pre-C++98) didn't support including standard headers without extensions. This module defines the following cache variable: ``CMAKE_NO_ANSI_STREAM_HEADERS`` A cache variable containing the result of the check. It will be set to value ``0`` if the standard headers can be included without the ``.h`` extension (``C++ 98`` and newer), and to value ``1`` if ``.h`` is required (``ANSI C++``). .. note:: The C++ standard headers without extensions got formally introduced in the ``C++ 98`` standard, making this issue obsolete. Examples ^^^^^^^^ Including this module will check how the C++ standard headers can be included and define the ``CMAKE_NO_ANSI_STREAM_HEADERS`` cache variable: .. code-block:: cmake :caption: ``CMakeLists.txt`` include(TestForANSIStreamHeaders) file( CONFIGURE OUTPUT config.h CONTENT "#cmakedefine CMAKE_NO_ANSI_STREAM_HEADERS" ) C++ program can then include the available header conditionally: .. code-block:: c++ :caption: ``example.cxx`` #include "config.h" #ifdef CMAKE_NO_ANSI_STREAM_HEADERS # include #else # include #endif int main() { ... } See Also ^^^^^^^^ * The :module:`CMakeBackwardCompatibilityCXX` module. #]=======================================================================] include(${CMAKE_CURRENT_LIST_DIR}/CheckIncludeFileCXX.cmake) if(NOT CMAKE_NO_ANSI_STREAM_HEADERS) check_include_file_cxx(iostream CMAKE_ANSI_STREAM_HEADERS) if (CMAKE_ANSI_STREAM_HEADERS) set (CMAKE_NO_ANSI_STREAM_HEADERS 0 CACHE INTERNAL "Does the compiler support headers like iostream.") else () set (CMAKE_NO_ANSI_STREAM_HEADERS 1 CACHE INTERNAL "Does the compiler support headers like iostream.") endif () mark_as_advanced(CMAKE_NO_ANSI_STREAM_HEADERS) endif()