This module checks whether the CXX compiler supports standard library
headers without the .h extension (e.g. <iostream>).
Load this module in a CMake project with:
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_HEADERSA 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.
Including this module will check how the C++ standard headers can be included
and define the CMAKE_NO_ANSI_STREAM_HEADERS cache variable:
CMakeLists.txtinclude(TestForANSIStreamHeaders)
file(
CONFIGURE
OUTPUT config.h
CONTENT "#cmakedefine CMAKE_NO_ANSI_STREAM_HEADERS"
)
C++ program can then include the available header conditionally:
example.cxx#include "config.h"
#ifdef CMAKE_NO_ANSI_STREAM_HEADERS
# include <iostream.h>
#else
# include <iostream>
#endif
int main() { ... }
The CMakeBackwardCompatibilityCXX module.