TestForSSTREAM

此模块检查 C++ 标准头文件 <sstream> 是否存在并能正确工作。

在 CMake 项目中加载此模块,使用

include(TestForSSTREAM)

在早期版本的 C++ (C++98 之前) 中,<sstream> 头文件并未正式标准化,可能不可用。

此模块定义了以下缓存变量

CMAKE_NO_ANSI_STRING_STREAM

一个缓存变量,指示 <sstream> 头文件是否可用。如果 <sstream> 可用 (C++98 及更新版本),则设置为值 0;如果 <sstream> 缺失 (ANSI C++),则设置为值 1

CMAKE_HAS_ANSI_STRING_STREAM

一个缓存变量,与 CMAKE_NO_ANSI_STRING_STREAM 的含义相反 (如果 <sstream> 可用则为 true,如果 <sstream> 缺失则为 false)。

注意

<sstream> 头文件在 C++98 标准中正式引入,因此对于现代编译器来说,此检查已过时。

示例

包含此模块将检查 <sstream> 支持情况,并定义 CMAKE_NO_ANSI_STRING_STREAM 缓存变量

CMakeLists.txt
include(TestForSSTREAM)
file(
  CONFIGURE
  OUTPUT config.h
  CONTENT "#cmakedefine CMAKE_NO_ANSI_STRING_STREAM"
)

然后它可以在 C++ 程序中使用

example.cxx
#include "config.h"

#ifndef CMAKE_NO_ANSI_STRING_STREAM
#  include <sstream>
#endif

int main() { ... }

另请参阅