美文网首页
cmake设置C++标准与代码判断C++标准

cmake设置C++标准与代码判断C++标准

作者: book_02 | 来源:发表于2024-05-05 16:30 被阅读0次

1. cmake设置C++标准

cmake有如下一些方式设置C++标准:

1.1 CMAKE_CXX_FLAGS 方式:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")

1.2 CXX_STANDARD 方式:

设置单个目标的C++标准

add_executable(myapp main.cpp)
set_property(TARGET myapp PROPERTY CXX_STANDARD 17)
set_property(TARGET myapp PROPERTY CXX_STANDARD_REQUIRED ON)

设置全局的C++标准

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

其他未经测试的方式暂不列出,后续测试完成之后再更新

2. 代码判断C++标准

代码可如下判断编译器支持的是哪个标准

2.1 对于GCC和Clang

对于GCC和Clang,使用 __cplusplus 宏来判断

#if __cplusplus >= 201703L
    std::cout << "Compiler supports C++17 or later." << std::endl;
#else
    std::cout << "Compiler does not support C++17 or later." << std::endl;
#endif

#if __cplusplus >= 201402L
    std::cout << "Compiler supports C++14 or later." << std::endl;
#else
    std::cout << "Compiler does not support C++14 or later." << std::endl;
#endif

#if __cplusplus >= 201103L
    std::cout << "Compiler supports C++11 or later." << std::endl;
#else
    std::cout << "Compiler does not support C++11 or later." << std::endl;
#endif

2.2 对于Visual Studio

对于Visual Studio,使用 _MSVC_LANG 宏来判断

#if _MSVC_LANG >= 201703L
    std::cout << "Compiler supports C++17 or later." << std::endl;
#else
    std::cout << "Compiler does not support C++17 or later." << std::endl;
#endif

#if _MSVC_LANG >= 201402L
    std::cout << "Compiler supports C++14 or later." << std::endl;
#else
    std::cout << "Compiler does not support C++14 or later." << std::endl;
#endif

#if _MSVC_LANG >= 201103L
    std::cout << "Compiler supports C++11 or later." << std::endl;
#else
    std::cout << "Compiler does not support C++11 or later." << std::endl;
#endif

在vs编译器中测试时发现,vs似乎始终按照自己支持的最高标准来执行,不支持调节

相关文章

  • 5.3 opencv实践

    一、CMakeLists.txt的更改 # 添加c++ 11标准支持 set( CMAKE_CXX_FLAGS "...

  • Boolan C++ STL与泛型编程_1

    c++标准库--体系结构与内核分析 主要内容: 本节主要对c++标准库学习的4个阶段,c++标准库和新旧式C的头文...

  • (boolean)Week5

    C++标准库(C++ Standard Library --architecure & sources)与泛型编程...

  • C语言宏的使用

    判断C++调用 判断C版本号 处理重复引入头文件 判断是不是DEBUG模式 CMAKE设置宏 跨平台打包动态库

  • C++ 学习网站汇总

    C++ 标准跟C++标准有关的内容都能从这个网站上找到。 cppreference对C++标准文档的重新组织 cp...

  • Boolan C++标准库 第一周

    C++标准库 第一讲 一、认识headers、版本 1.C++标准库 vs STL C++标准库大于STL(标准...

  • C++ STL(1)

    C++ STL(1) from my csdn blog C++标准模板库 容器C++标准模板库提供了10种容器基...

  • python3 c++ 和 java

    基本语法 长度 python c++ java 标准化输入&输出 python c++在C++中,标准的输入输出是...

  • C++面向对象高级编程(上)笔记

    1.培养规范、大气的编程习惯 C++的学习过程可以分为C++语言与C++标准库两个部分,不必太在乎版本。标准库一般...

  • Boolan微专业-STL与泛型编程(Week04)

    C++标准库---体系结构与内核分析

网友评论

      本文标题:cmake设置C++标准与代码判断C++标准

      本文链接:https://www.haomeiwen.com/subject/nfbkfjtx.html