Uploaded image for project: 'Qbs ("Cubes")'
  1. Qbs ("Cubes")
  2. QBS-1621

Moc adds boost namespace to the class if include <boost/function.hpp>

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Not Evaluated
    • None
    • 1.17.0, 1.17.1
    • API: C++
    • None
    • Ubuntu 18.04
      GCC 7.5.0
      Boost 1.72.0
    • Linux/X11
    • f4c76e08f24b48e142683cea54b4c64a75083f17 (qbs/qbs/1.18)

    Description

      QBS 1.17 moc generation got broken for our projects.

      You can reproduce it on Release gcc build, boost 1.72.0 using simple header

      #pragma once
      
      #include <QtCore/QObject>
      
      #include <boost/function.hpp>
      
      
      class Test : public QObject
      {
          Q_OBJECT
      };
      
      

      Compile output:

      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:58:13: error: ‘boost::Test’ has not been declared
       void boost::Test::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
                   ^~~~
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:66:45: error: ‘boost::Test’ has not been declared
       QT_INIT_METAOBJECT const QMetaObject boost::Test::staticMetaObject = { {
                                                   ^~~~
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:76:27: error: ‘boost::Test’ has not been declared
       const QMetaObject *boost::Test::metaObject() const
                                 ^~~~
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:76:46: error: non-member function ‘const QMetaObject* metaObject()’ cannot have cv-qualifier
       const QMetaObject *boost::Test::metaObject() const
                                                    ^~~~~
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp: In function ‘const QMetaObject* metaObject()’:
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:78:21: error: ‘QScopedPointer<QObjectData> QObject::d_ptr’ is protected within this context
           return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
                           ^~~~~
      In file included from /home/buildserver/.conan/data/qt/5.15.0/openmedia/default/package/1bade7dedaccd8b7851540e14f0b2584c0d1ca70/include/QtCore/QObject:1:0,
                       from /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/../../../../test/test.h:3,
                       from /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:10:
      /home/buildserver/.conan/data/qt/5.15.0/openmedia/default/package/1bade7dedaccd8b7851540e14f0b2584c0d1ca70/include/QtCore/qobject.h:450:33: note: declared protected here
           QScopedPointer<QObjectData> d_ptr;
                                       ^~~~~
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:78:21: error: invalid use of non-static data member ‘QObject::d_ptr’
           return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
                           ^~~~~
      In file included from /home/buildserver/.conan/data/qt/5.15.0/openmedia/default/package/1bade7dedaccd8b7851540e14f0b2584c0d1ca70/include/QtCore/QObject:1:0,
                       from /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/../../../../test/test.h:3,
                       from /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:10:
      /home/buildserver/.conan/data/qt/5.15.0/openmedia/default/package/1bade7dedaccd8b7851540e14f0b2584c0d1ca70/include/QtCore/qobject.h:450:33: note: declared here
           QScopedPointer<QObjectData> d_ptr;
                                       ^~~~~
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:78:50: error: ‘QScopedPointer<QObjectData> QObject::d_ptr’ is protected within this context
           return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
                                                        ^~~~~
      In file included from /home/buildserver/.conan/data/qt/5.15.0/openmedia/default/package/1bade7dedaccd8b7851540e14f0b2584c0d1ca70/include/QtCore/QObject:1:0,
                       from /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/../../../../test/test.h:3,
                       from /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:10:
      /home/buildserver/.conan/data/qt/5.15.0/openmedia/default/package/1bade7dedaccd8b7851540e14f0b2584c0d1ca70/include/QtCore/qobject.h:450:33: note: declared protected here
           QScopedPointer<QObjectData> d_ptr;
                                       ^~~~~
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:78:50: error: invalid use of non-static data member ‘QObject::d_ptr’
           return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
                                                        ^~~~~
      In file included from /home/buildserver/.conan/data/qt/5.15.0/openmedia/default/package/1bade7dedaccd8b7851540e14f0b2584c0d1ca70/include/QtCore/QObject:1:0,
                       from /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/../../../../test/test.h:3,
                       from /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:10:
      /home/buildserver/.conan/data/qt/5.15.0/openmedia/default/package/1bade7dedaccd8b7851540e14f0b2584c0d1ca70/include/QtCore/qobject.h:450:33: note: declared here
           QScopedPointer<QObjectData> d_ptr;
                                       ^~~~~
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp: At global scope:
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:81:14: error: ‘boost::Test’ has not been declared
       void *boost::Test::qt_metacast(const char *_clname)
                    ^~~~
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp: In function ‘void* qt_metacast(const char*)’:
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:85:35: error: invalid use of ‘this’ in non-member function
               return static_cast<void*>(this);
                                         ^~~~
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:86:40: error: cannot call member function ‘virtual void* QObject::qt_metacast(const char*)’ without object
           return QObject::qt_metacast(_clname);
                                              ^
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp: At global scope:
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:89:12: error: ‘boost::Test’ has not been declared
       int boost::Test::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
                  ^~~~
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp: In function ‘int qt_metacall(QMetaObject::Call, int, void**)’:
      /home/buildserver/Projects/build-test-conan-Debug/Debug_conan_3012411d6b391e96/test.a94a8fe5/qt.headers/moc_test.cpp:91:43: error: cannot call member function ‘virtual int QObject::qt_metacall(QMetaObject::Call, int, void**)’ without object
           _id = QObject::qt_metacall(_c, _id, _a);
      
      

      It's a regression from 1.16 version.

      Attachments

        1. test.h
          0.1 kB
        2. test.qbs
          2 kB
        For Gerrit Dashboard: QBS-1621
        # Subject Branch Project Status CR V

        Activity

          People

            kandeler Christian Kandeler
            mabean Max Bespalov
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes