首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有可能用Clang和Qt6修复来自Q_GADGET的多重继承的失败构建吗?

有可能用Clang和Qt6修复来自Q_GADGET的多重继承的失败构建吗?
EN

Stack Overflow用户
提问于 2022-07-09 09:58:57
回答 1查看 70关注 0票数 0

在我的一个项目中,在MacOS下构建GitHub操作:

代码语言:javascript
复制
macos:
  name: macos
  runs-on: macos-11

子项目JKQtPlotter失败:

代码语言:javascript
复制
[ 64%] Building CXX object 3rdparty/JKQtPlotter/lib/jkqtplotter/CMakeFiles/JKQTPlotterSharedLib.dir/JKQTPlotterSharedLib_autogen/mocs_compilation.cpp.o
In file included from /Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/jkqtplotter/JKQTPlotterSharedLib_autogen/mocs_compilation.cpp:2:
In file included from /Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/jkqtplotter/JKQTPlotterSharedLib_autogen/XT4CMLABNO/moc_jkqtpbarchart.cpp:10:
In file included from /Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/jkqtplotter/JKQTPlotterSharedLib_autogen/XT4CMLABNO/../../graphs/jkqtpbarchart.h:25:
In file included from /Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtGui.framework/Headers/QPainter:1:
In file included from /Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtGui.framework/Headers/qpainter.h:48:
In file included from /Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtGui.framework/Headers/qpixmap.h:48:
In file included from /Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qsharedpointer.h:48:
In file included from /Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qsharedpointer_impl.h:65:
In file included from /Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qobject.h:54:
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qmetatype.h:872:49: error: member 'qt_check_for_QGADGET_macro' found in multiple base classes of different types
            IsRealGadget = sizeof(checkType(&T::qt_check_for_QGADGET_macro)) == sizeof(void *),
                                                ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qmetatype.h:1189:25: note: in instantiation of template class 'QtPrivate::IsGadgetHelper<JKQTPBarVerticalGraph>' requested here
                     | (IsGadgetHelper<T>::IsGadgetOrDerivedFrom ? QMetaType::IsGadget : 0)
                        ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qmetatype.h:2367:21: note: in instantiation of template class 'QtPrivate::QMetaTypeTypeFlags<JKQTPBarVerticalGraph>' requested here
        /*.flags=*/ QMetaTypeTypeFlags<T>::Flags,
                    ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qmetatype.h:2494:48: note: in instantiation of static data member 'QtPrivate::QMetaTypeInterfaceWrapper<JKQTPBarVerticalGraph>::metaType' requested here
        return &QMetaTypeInterfaceWrapper<Ty>::metaType;
                                               ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qmetatype.h:2538:16: note: in instantiation of function template specialization 'QtPrivate::qTryMetaTypeInterfaceForType<qt_meta_stringdata_JKQTPBarVerticalGraph_t, QtPrivate::TypeAndForceComplete<JKQTPBarVerticalGraph, std::integral_constant<bool, true>>>' requested here
    QtPrivate::qTryMetaTypeInterfaceForType<Unique, T>()...
               ^
/Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/jkqtplotter/JKQTPlotterSharedLib_autogen/XT4CMLABNO/moc_jkqtpbarchart.cpp:95:1: note: in instantiation of variable template specialization 'qt_incomplete_metaTypeArray<qt_meta_stringdata_JKQTPBarVerticalGraph_t, QtPrivate::TypeAndForceComplete<JKQTPBarVerticalGraph, std::integral_constant<bool, true>>, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<unsigned long, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<unsigned long, std::integral_constant<bool, false>>>' requested here
qt_incomplete_metaTypeArray<qt_meta_stringdata_JKQTPBarVerticalGraph_t
^
/Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/./jkqtplotter/jkqtpgraphsbasestylingmixins.h:49:9: note: member found by ambiguous name lookup
        Q_GADGET
        ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qtmetamacros.h:193:18: note: expanded from macro 'Q_GADGET'
#define Q_GADGET Q_GADGET_EXPORT()
                 ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qtmetamacros.h:182:10: note: expanded from macro 'Q_GADGET_EXPORT'
    void qt_check_for_QGADGET_macro(); \
         ^
/Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/./jkqtplotter/jkqtpgraphsbasestylingmixins.h:396:9: note: member found by ambiguous name lookup
        Q_GADGET
        ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qtmetamacros.h:193:18: note: expanded from macro 'Q_GADGET'
#define Q_GADGET Q_GADGET_EXPORT()
                 ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qtmetamacros.h:182:10: note: expanded from macro 'Q_GADGET_EXPORT'
    void qt_check_for_QGADGET_macro(); \
         ^
In file included from /Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/jkqtplotter/JKQTPlotterSharedLib_autogen/mocs_compilation.cpp:2:
In file included from /Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/jkqtplotter/JKQTPlotterSharedLib_autogen/XT4CMLABNO/moc_jkqtpbarchart.cpp:10:
In file included from /Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/jkqtplotter/JKQTPlotterSharedLib_autogen/XT4CMLABNO/../../graphs/jkqtpbarchart.h:25:
In file included from /Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtGui.framework/Headers/QPainter:1:
In file included from /Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtGui.framework/Headers/qpainter.h:48:
In file included from /Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtGui.framework/Headers/qpixmap.h:48:
In file included from /Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qsharedpointer.h:48:
In file included from /Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qsharedpointer_impl.h:65:
In file included from /Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qobject.h:54:
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qmetatype.h:872:49: error: member 'qt_check_for_QGADGET_macro' found in multiple base classes of different types
            IsRealGadget = sizeof(checkType(&T::qt_check_for_QGADGET_macro)) == sizeof(void *),
                                                ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qmetatype.h:1189:25: note: in instantiation of template class 'QtPrivate::IsGadgetHelper<JKQTPBarVerticalErrorGraph>' requested here
                     | (IsGadgetHelper<T>::IsGadgetOrDerivedFrom ? QMetaType::IsGadget : 0)
                        ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qmetatype.h:2367:21: note: in instantiation of template class 'QtPrivate::QMetaTypeTypeFlags<JKQTPBarVerticalErrorGraph>' requested here
        /*.flags=*/ QMetaTypeTypeFlags<T>::Flags,
                    ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qmetatype.h:2494:48: note: in instantiation of static data member 'QtPrivate::QMetaTypeInterfaceWrapper<JKQTPBarVerticalErrorGraph>::metaType' requested here
        return &QMetaTypeInterfaceWrapper<Ty>::metaType;
                                               ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qmetatype.h:2538:16: note: in instantiation of function template specialization 'QtPrivate::qTryMetaTypeInterfaceForType<qt_meta_stringdata_JKQTPBarVerticalErrorGraph_t, QtPrivate::TypeAndForceComplete<JKQTPBarVerticalErrorGraph, std::integral_constant<bool, true>>>' requested here
    QtPrivate::qTryMetaTypeInterfaceForType<Unique, T>()...
               ^
/Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/jkqtplotter/JKQTPlotterSharedLib_autogen/XT4CMLABNO/moc_jkqtpbarchart.cpp:204:1: note: in instantiation of variable template specialization 'qt_incomplete_metaTypeArray<qt_meta_stringdata_JKQTPBarVerticalErrorGraph_t, QtPrivate::TypeAndForceComplete<JKQTPBarVerticalErrorGraph, std::integral_constant<bool, true>>, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<unsigned long, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<unsigned long, std::integral_constant<bool, false>>>' requested here
qt_incomplete_metaTypeArray<qt_meta_stringdata_JKQTPBarVerticalErrorGraph_t
^
/Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/./jkqtplotter/jkqtpgraphsbasestylingmixins.h:49:9: note: member found by ambiguous name lookup
        Q_GADGET
        ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qtmetamacros.h:193:18: note: expanded from macro 'Q_GADGET'
#define Q_GADGET Q_GADGET_EXPORT()
                 ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qtmetamacros.h:182:10: note: expanded from macro 'Q_GADGET_EXPORT'
    void qt_check_for_QGADGET_macro(); \
         ^
/Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/./jkqtplotter/jkqtpgraphsbasestylingmixins.h:396:9: note: member found by ambiguous name lookup
        Q_GADGET
        ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qtmetamacros.h:193:18: note: expanded from macro 'Q_GADGET'
#define Q_GADGET Q_GADGET_EXPORT()
                 ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qtmetamacros.h:182:10: note: expanded from macro 'Q_GADGET_EXPORT'
    void qt_check_for_QGADGET_macro(); \
         ^
/Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/./jkqtplotter/jkqtpgraphsbaseerrors.h:315:9: note: member found by ambiguous name lookup
        Q_GADGET
        ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qtmetamacros.h:193:18: note: expanded from macro 'Q_GADGET'
#define Q_GADGET Q_GADGET_EXPORT()
                 ^
/Users/runner/work/md-pdf/Qt/6.3.1/macos/lib/QtCore.framework/Headers/qtmetamacros.h:182:10: note: expanded from macro 'Q_GADGET_EXPORT'
    void qt_check_for_QGADGET_macro(); \
         ^
In file included from /Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/jkqtplotter/JKQTPlotterSharedLib_autogen/mocs_compilation.cpp:2:
In file included from /Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/jkqtplotter/JKQTPlotterSharedLib_autogen/XT4CMLABNO/moc_jkqtpbarchart.cpp:10:
In file included from /Users/runner/work/md-pdf/md-pdf/3rdparty/JKQtPlotter/lib/jkqtplotter/JKQTPlotterSharedLib_autogen/XT4CMLABNO/../../graphs/jkqtpbarchart.h:25:

我没有MacOS来处理这个问题。也许有人知道怎么解决它?谢谢。

要重现此错误,只需使用MOC并使用Clang构建以下标题:

代码语言:javascript
复制
#pragma once

#include <QObject>


class Gadget1 {
    Q_GADGET
};

class Gadget2 {
    Q_GADGET
};

class Object1
    :   public QObject
{
    Q_OBJECT
};

class Check
    :   public Object1
    ,   public Gadget1
    ,   public Gadget2
{
    Q_OBJECT
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-11 16:23:05

好的,这是Qt6在使用Clang构建时的一个问题。Qt虫已得到证实。所以我决定贴出这样的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72920443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档