TestForANSIStreamHeaders¶
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_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 value1
if.h
is required (ANSI C++
).
備註
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.txt
¶include(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.