qt - 编译我的程序时系统更新后来自 QBrush 的突然 memcopy 警告
问题描述
我不知道为什么会这样。但是每次我用我安装的几个 Qt 版本编译我的应用程序时,我现在都会收到以下警告:
In file included from /home/Qt5.9.2/5.9.2/gcc_64/include/QtGui/qbrush.h:50,
from /home/Qt5.9.2/5.9.2/gcc_64/include/QtGui/qpalette.h:46,
from /home/Qt5.9.2/5.9.2/gcc_64/include/QtWidgets/qwidget.h:48,
from /home/Qt5.9.2/5.9.2/gcc_64/include/QtWidgets/qdesktopwidget.h:44,
from /home/Qt5.9.2/5.9.2/gcc_64/include/QtWidgets/QDesktopWidget:1,
from ../src/../../CommonClasses/SQLConn/../../CommonClasses/common.h:6,
from ../src/../../CommonClasses/SQLConn/dbinterface.h:10,
from ../src/../../EyeExperimenter/src/sslclient/sslclient.h:10,
from ../src/../../EyeExperimenter/src/sslclient/ssldbclient.h:4,
from ../src/sslwrapper.h:6,
from ../src/main.cpp:3:
/home/Qt5.9.2/5.9.2/gcc_64/include/QtGui/qtransform.h: In member function ‘QTransform& QTransform::operator=(QTransform&&)’:
/home/Qt5.9.2/5.9.2/gcc_64/include/QtGui/qtransform.h:81:46: warning: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of type ‘class QTransform’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
{ memcpy(this, &other, sizeof(QTransform)); return *this; }
^
/home/Qt5.9.2/5.9.2/gcc_64/include/QtGui/qtransform.h:57:20: note: ‘class QTransform’ declared here
class Q_GUI_EXPORT QTransform
谁能告诉我这个警告是什么,更重要的是,我该如何摆脱它?从我所看到的情况来看,它与我的系统当前拥有的 gcc8 有关,但是我尝试在 QtCreator 的 Qt Kits 配置中更改编译器并且警告仍然出现......
解决方案
您使用 qmake 作为构建系统生成器,然后使用 gnu make 来实际构建东西 - Qt Creator 只是在命令行上全部输入的快捷方式:)
您可以通过将以下内容添加到.pro
文件中来将相关标志传递给编译器,然后在项目上重新运行 qmake(例如,删除构建文件夹并再次构建):
QMAKE_CFLAGS_WARN_ON += -Wno-class-memaccess
QMAKE_CXXFLAGS_WARN_ON += -Wno-class-memaccess
QMAKE_CFLAGS += -Wno-class-memaccess
QMAKE_CXXFLAGS += -Wno-class-memaccess
推荐阅读
- javascript - 这个意想不到的输出是怎么来的?
- excel - Excel - 使用 SUMIF/INDEX/MATCH 将数周合并为数月
- azure-devops - 在 ARM 模板中管理复杂的 SQL 查询
- julia - Julia SymPy.det(M) 不起作用,但 SymPy.det([M[1] M[2]; M[3] M[4]]) 起作用
- javascript - 如何通过多个相同的属性过滤对象数组
- text-parsing - 在python中删除以octothorpe开头的列表元素会省略一些元素
- r - R plot:如何正确调整挑剔的边距?
- c++ - 概念并没有像预期的那样解决歧义。代码示例有什么问题?
- python - pivottable.js display 引入了源 pandas Dataframe 中不存在的 NULL 值
- c++ - 遍历字符串以检查每个字符串中是否有字符出现