如果您有CMake版本3.1.0或更高版本,您可以检测什么C功能

你的C编译器支持

cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)

project(foobar CXX)

message("Your C++ compiler supports these C++ features:")

foreach(i ${CMAKE_CXX_COMPILE_FEATURES})

message("${i}")

endforeach()

但通常你不需要在CMake脚本中使用CMake变量CMAKE_CXX_COMPILE_FEATURES。相反有两种方法如何告诉CMake根据C标准你的C文件应该编译,通过

明确指定C标准或通过指定所需的C特性,并让CMake引入C标准。 CMake将确保使用正确的命令行标志(例如-std = c 11)调用C编译器。

1.明确指定C标准

您可以通过设置CMake属性明确指定C标准

CXX_STANDARD

CXX_STANDARD_REQUIRED为您的CMake目标。

$ cat /tmp/src/CMakeLists.txt

project(foobar CXX)

cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)

add_executable(prog main.cc)

set_property(TARGET prog PROPERTY CXX_STANDARD 11)

set_property(TARGET prog PROPERTY CXX_STANDARD_REQUIRED ON)

$ cat /tmp/src/main.cc

int main() {

return 0;

}

$ mkdir /tmp/build

$ cd /tmp/build

$ cmake /tmp/src

-- The CXX compiler identification is GNU 4.8.2

-- Check for working CXX compiler: /usr/bin/c++

-- Check for working CXX compiler: /usr/bin/c++ -- works

-- Detecting CXX compiler ABI info

-- Detecting CXX compiler ABI info - done

-- Detecting CXX compile features

-- Detecting CXX compile features - done

-- Configuring done

-- Generating done

-- Build files have been written to: /tmp/build

$ make VERBOSE=1 | grep main.cc | grep -- "-c"

/usr/bin/c++ -std=gnu++11 -o CMakeFiles/prog.dir/main.cc.o -c /tmp/src/main.cc

$

2.指定所需的C特性,让CMake引入C标准

您可以使用CMake命令target_compile_features指定在您的CMake目标中使用的C功能。从这个列表CMake将诱使要使用的C标准。 CMake全局属性CMAKE_CXX_KNOWN_FEATURES列出了您可以选择的C功能。

cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)

message("Your CMake version supports these C++ features:")

get_property(known_features GLOBAL PROPERTY CMAKE_CXX_KNOWN_FEATURES)

foreach(i ${known_features})

message("${i}")

endforeach()

例如,这个具有文件名main.cc的C程序使用C 11特性:

cxx_strong_enums,cxx_constexpr,cxx_auto_type

#include

int main(int argc, char *argv[]) {

enum class Color { Red, Orange, Yellow, Green, Blue, Violet };

constexpr float a = 3.1415f;

auto b = a;

return EXIT_SUCCESS;

}

这个CMakeLists.txt文件将构建它

cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)

project(foobar CXX)

add_executable(foobar main.cc)

set(needed_features

cxx_strong_enums

cxx_constexpr

cxx_auto_type)

target_compile_features(foobar PRIVATE ${needed_features})

c语言编译器C11,如何检测c11支持编译器与cmake相关推荐

  1. Matlab2022a无法识别vs2019编译器,未检测到支持的编译器,错误使用Mex -setup error cannot find support compiler

    Matlab无法识别vs编译器 下面的文章内容,将以解决matlab无法识别vs编译器的问题,我这里的版本是matlab2022a,vs2019,原因是需要将matlab和c++混编时出现找不到编译器 ...

  2. 《C语言编程魔法书:基于C11标准》——1.3 主流C语言编译器介绍

    本节书摘来自华章计算机<C语言编程魔法书:基于C11标准>一书中的第1章,第1.3节,作者: 陈轶 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.3 主流 ...

  3. 《C语言编程魔法书:基于C11标准》——第一篇 预备知识篇 第1章 C魔法概览1.1 例说编程语言...

    本节书摘来自华章计算机<C语言编程魔法书:基于C11标准>一书中的第1章,第1.1节,作者: 陈轶 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第一篇 预备 ...

  4. c语言魔法书,C语言编程魔法书:基于C11标准

    C语言编程魔法书:基于C11标准 作者:陈轶 著 出版日期:2017年05月 文件大小:10.29M 支持设备: ¥60.00在线试读 适用客户端: 言商书局 iPad/iPhone客户端:下载 An ...

  5. c语言程序设计资料书下载,C语言编程魔法书:基于C11标准 (陈轶著) 完整pdf高清版[20MB]...

    C语言编程魔法书:基于C11标准主要讲解C11标准的语法内容,并且从整个编译.连接到加载过程都会涉及.同时在后会分别介绍GCC编译器与Clang编译器的C语言语法扩展.通过阅读本书,读者能够完全掌握新 ...

  6. 《C语言编程魔法书:基于C11标准》——1.6 本章小结

    本节书摘来自华章计算机<C语言编程魔法书:基于C11标准>一书中的第1章,第1.6节,作者: 陈轶 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.6 本章 ...

  7. 《C语言编程魔法书:基于C11标准》——3.3 本章小结

    本节书摘来自华章计算机<C语言编程魔法书:基于C11标准>一书中的第3章,第3.3节,作者 陈轶,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.3 本章小 ...

  8. 《C语言编程魔法书:基于C11标准》——2.9 本章小结

    本节书摘来自华章计算机<C语言编程魔法书:基于C11标准>一书中的第2章,第2.9节,作者: 陈轶 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.9 本章 ...

  9. 《C语言编程魔法书:基于C11标准》——2.6 大端与小端

    本节书摘来自华章计算机<C语言编程魔法书:基于C11标准>一书中的第2章,第2.6节,作者: 陈轶 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.6 大端 ...

  10. [C++]各编译器对C++11的支持比较

    各编译器对C++11的支持比较 转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=2154 在KlayGE首次引入C++11特性之后,我顺便调研了 ...

最新文章

  1. 对称加密和非对称加密
  2. Angular单元测试框架里API toHaveBeenCalledTimes的工作原理
  3. Acer Travelmate T3290笔记本拆机指南
  4. 充分利用UC berkeleys数据科学专业
  5. 设计一个名为complex的类来表示复数_CAE必修课:结构动力优化设计_搜狐汽车
  6. 做开发,这几种锁机制你不得不了解一下
  7. iPhone 13系列相机有大升级:全系支持光学防抖功能
  8. 2017年3月21日
  9. 714. 买卖股票的最佳时机含手续费-动态规划算法
  10. •SVG g、defs、symbol和use元素详解
  11. 游戏音效制作的过程中,需要研发公司怎么配合?
  12. 详解Django的Models(django基础四)
  13. IP-Guard如何禁止运行U盘程序
  14. [DEFCON全球黑客大会] 针对CTF,大家都是怎么训练的?
  15. dreamweaver中灵活的调整表格的宽高
  16. AD 22 如何从SchDoc文件生成PcbDoc文件,进行布局和走线?
  17. 华为cpe虚拟服务器,华为5G CPE Pro:让你不用换手机就能体验5G网络
  18. SpringCloud-config分布式配置中心
  19. 使用Python将OV7725的RGB565图像数据转换为jpg图像
  20. php dateparse,PHP date_parse_from_format() 函数用法及示例

热门文章

  1. 常用无线通信协议Zigbee、bluetooth、wifi比较
  2. 运筹系列10:线性规划开源软件GLPK和PyMathProg
  3. 气象报告是什么计算机领域,计算机辅助翻译系统在亚运气象服务方面的应用报告...
  4. c# 设为首页和加入收藏代码
  5. 通过url访问静态资源
  6. 税务计算机类考试题型,税务师考试题型分值分配、计算器要求及2020年考试时间安排...
  7. 博客园9月份第3周51Aspx源码发布详情
  8. 微型计算机的构成部件6,谈谈微机的主要部件与指标
  9. windows驱动开发 DDK/WDK/WDM/WDF区别
  10. HttpClient下载