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() { ... }