TestForANSIStreamHeaders¶
此模块检查 CXX 编译器是否支持没有 .h 扩展名的标准库头文件(例如 <iostream>)。
在 CMake 项目中加载此模块,使用
include(TestForANSIStreamHeaders)
C++ 的早期版本(C++98 之前)不支持包含没有扩展名的标准头文件。
此模块定义了以下缓存变量
- CMAKE_NO_ANSI_STREAM_HEADERS
- 一个包含检查结果的缓存变量。如果标准头文件可以不带 - .h扩展名包含(- C++ 98及更高版本),则其值将设置为- 0;如果需要- .h(- ANSI C++),则设置为- 1。
注意
不带扩展名的 C++ 标准头文件在 C++ 98 标准中正式引入,使得此问题已过时。
示例¶
包含此模块将检查 C++ 标准头文件如何包含,并定义 CMAKE_NO_ANSI_STREAM_HEADERS 缓存变量
CMakeLists.txt¶include(TestForANSIStreamHeaders)
file(
  CONFIGURE
  OUTPUT config.h
  CONTENT "#cmakedefine CMAKE_NO_ANSI_STREAM_HEADERS"
)
C++ 程序随后可以有条件地包含可用的头文件
example.cxx¶#include "config.h"
#ifdef CMAKE_NO_ANSI_STREAM_HEADERS
#  include <iostream.h>
#else
#  include <iostream>
#endif
int main() { ... }
