TestForSTDNamespace¶
此模块检查 CXX
编译器是否支持 C++ 标准库的 std
命名空间。
在 CMake 项目中加载此模块,使用
include(TestForSTDNamespace)
早期版本的 C++(C++98 之前)没有要求为 C++ 标准模板库(STL)组件(例如 list
等)和 C++ 标准库的其他部分(例如 I/O 流 cout
、endl
等)设置专用命名空间,因此它们是全局可用的。
此模块定义了以下缓存变量
CMAKE_NO_STD_NAMESPACE
一个缓存变量,包含检查结果。如果支持
std
命名空间(C++ 98
及更新版本),则将其值设置为0
;如果不支持(ANSI C++
),则将其值设置为1
。
注意
std
命名空间在 C++ 98
标准中正式引入,使得此问题已过时。
示例¶
包含此模块将检查 std
命名空间支持,并定义 CMAKE_NO_STD_NAMESPACE
缓存变量
CMakeLists.txt
¶include(TestForSTDNamespace)
file(
CONFIGURE
OUTPUT config.h
CONTENT "#cmakedefine CMAKE_NO_STD_NAMESPACE"
)
然后可以在 C++ 程序中使用它来定义缺失的命名空间
example.cxx
¶#include "config.h"
#ifdef CMAKE_NO_STD_NAMESPACE
# define std
#endif