博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt5.7以及5.8在cmake工程中使用C++14编译遇到的问题及解决方案
阅读量:5776 次
发布时间:2019-06-18

本文共 922 字,大约阅读时间需要 3 分钟。

  hot3.png

最近在编译一个用到C++14特性的工程时,遇到这样一个问题。

编译时报:error: ‘decay_t’ is not a member of ‘std’

std::decay_t属于C++14加入的特性,需要 #include <type_traits>,set(STD_CXX -std=gnu++14) 使用 C++14也可以。

但这些设置都是有的,查看type_traits文件,发现这些新特性语句在 #if __cplusplus > 201103L 语句中包含,把main函数只剩std::cout << __cplusplus  <<std::endl; 发现,__cplusplus是201103

这就纳闷了,明明已经指定set(STD_CXX -std=gnu++14) 了呀,__cplusplus应是201402

其它工程测试,__cplusplus是201402,因此怀疑是Qt5导致的,通过逐步删除CMakeList.txt文件中的与Qt5相关的语句调试,发现,只有加入 target_link_libraries(${PROJECT_NAME}  Qt5::Widgets Qt5::Qml),__cplusplus就成为201103,使用Qt5.6版本,没有这个问题,5.8跟5.7一样,有此问题。

Qt官网求答案,原来是这样:

If you use Qt 5.7 and a CMake version above 3.1.0, plus require a more recent C++ standard version, use the CMake way of selecting the standard version, or specify features required and let CMake compute the flags. Example:

set(CMAKE_CXX_STANDARD 14)

在CMakeList.txt文件中加入这一句,问题得以解决。真是Qt5跟cmake联合挖坑啊!

转载于:https://my.oschina.net/lieefu/blog/812621

你可能感兴趣的文章
crm 02--->讲师页面及逻辑
查看>>
AS3.0 Bitmap类实现图片3D旋转效果
查看>>
Eigen ,MKL和 matlab 矩阵乘法速度比较
查看>>
带三角的面包屑导航栏(新增递增数字)
查看>>
Web应用程序安全与风险
查看>>
codeforces 984 A. Game
查看>>
CSS居中
查看>>
One Person Game(概率+数学)
查看>>
CodeForces 258B Little Elephant and Elections :于1-m中找出七个数,使六个数里面的4和7个数比第七个数严格小:数位dp+dfs...
查看>>
MAP
查看>>
手把手教你测——上网快鸟
查看>>
用javascript获取地址栏参数
查看>>
一起谈.NET技术,你应该知道的15个Silverlight诀窍
查看>>
商教助手!解析夏普液晶高清宽屏投影机系列
查看>>
云南去年有望实现151万贫困人口净脱贫
查看>>
Java架构师面试题系列整理(大全)
查看>>
延伸产业链 中国产粮大省向“精深”问发展
查看>>
消费贷用户70%月收入低于5000元 80、90后是主要人群
查看>>
2018年内蒙古外贸首次突破1000亿元
查看>>
CTOR有助于BCH石墨烯技术更上一层楼
查看>>