Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiple build errors in src/sampleplugin.h: Undefined interface & expected class-name before ‘,’ token #1866

Open
swiss-knight opened this issue Mar 15, 2024 · 0 comments

Comments

@swiss-knight
Copy link

Bug description
The compilation from source stops on the following error:

src/sampleplugin.h:37:1: error: Undefined interface
make[2]: *** [Makefile:399: moc/moc_sampleplugin.cpp] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from src/sampleplugin.cpp:19:
src/sampleplugin.h:30:35: error: expected class-name before ‘,’ token

See full stack hereunder.

How to reproduce

cd /opt \
&& git clone https://github.com/pgmodeler/pgmodeler.git \
&& cd pgmodeler \
&& pkg-config libxml-2.0 --cflags --libs \
&& pkg-config libpq --cflags --libs \
&& $QT_ROOT/bin/qmake6 -r CONFIG+=release PREFIX=$INSTALLATION_ROOT BINDIR=$INSTALLATION_ROOT \
   PRIVATEBINDIR=$INSTALLATION_ROOT PRIVATELIBDIR=$INSTALLATION_ROOT/lib pgmodeler.pro \
&& make clean \
&& make -j4

Expected behavior
The compilation runs to the end without errors.

Screenshots
N/A.

Info about your desktop

  • OS: Ubuntu 22.04.4 LTS (6.5.0-18-generic x86_64 GNU/Linu)
  • Shell: bash 5.1.16
  • DE: GNOME 42.9
  • WM: Mutter
  • WM Theme: Adwaita
  • pgModeler version: main branch
  • Qt version:
$ qmake6 -v
QMake version 3.1
Using Qt version 6.2.4 in /usr/lib/x86_64-linux-gnu

Stacktrace / Debug info
If pgModeler crashed after the bug raised attach the stacktrace below

src/sampleplugin.h:37:1: error: Undefined interface
make[2]: *** [Makefile:399: moc/moc_sampleplugin.cpp] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from src/sampleplugin.cpp:19:
src/sampleplugin.h:30:35: error: expected class-name before ‘,’ token
   30 | class SamplePlugin: public QObject, public PgModelerPlugin {
      |                                   ^
In file included from /usr/include/x86_64-linux-gnu/qt6/QtCore/qnamespace.h:45,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:45,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qstringview.h:58,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qchar.h:666,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qstring.h:50,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/QString:1,
                 from ../../libs/libutils/src/pgmodelerplugin.h:29,
                 from src/sampleplugin.h:28,
                 from src/sampleplugin.cpp:19:
/usr/include/x86_64-linux-gnu/qt6/QtCore/qtmetamacros.h:165:29: error: ‘QMetaObject::Call’ has not been declared
  165 |     virtual int qt_metacall(QMetaObject::Call, int, void **); \
      |                             ^~~~~~~~~~~
src/sampleplugin.h:32:17: note: in expansion of macro ‘Q_OBJECT’
   32 |                 Q_OBJECT
      |                 ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt6/QtCore/qtmetamacros.h:169:66: error: ‘QObject’ has not been declared
  169 |     Q_DECL_HIDDEN_STATIC_METACALL static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); \
      |                                                                  ^~~~~~~
src/sampleplugin.h:32:17: note: in expansion of macro ‘Q_OBJECT’
   32 |                 Q_OBJECT
      |                 ^~~~~~~~
/usr/include/x86_64-linux-gnu/qt6/QtCore/qtmetamacros.h:169:77: error: ‘QMetaObject::Call’ has not been declared
  169 |     Q_DECL_HIDDEN_STATIC_METACALL static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); \
      |                                                                             ^~~~~~~~~~~
src/sampleplugin.h:32:17: note: in expansion of macro ‘Q_OBJECT’
   32 |                 Q_OBJECT
      |                 ^~~~~~~~
In file included from src/sampleplugin.cpp:19:
src/sampleplugin.h:39:17: error: ‘QAction’ does not name a type
   39 |                 QAction *config_action, *toolbar_action, *model_action;
      |                 ^~~~~~~
src/sampleplugin.h:41:17: error: ‘QToolButton’ does not name a type
   41 |                 QToolButton *dbexplorer_tb;
      |                 ^~~~~~~~~~~
src/sampleplugin.h:43:33: error: ‘MainWindow’ has not been declared
   43 |                 void initPlugin(MainWindow *main_wnd) override;
      |                                 ^~~~~~~~~~
src/sampleplugin.h:54:17: error: ‘QAction’ does not name a type
   54 |                 QAction *getAction(ActionId act_id) const override;
      |                 ^~~~~~~
src/sampleplugin.h:55:17: error: ‘QToolButton’ does not name a type
   55 |                 QToolButton *getToolButton() const override;
      |                 ^~~~~~~~~~~
src/sampleplugin.h:43:22: error: ‘void SamplePlugin::initPlugin(int*)’ marked ‘override’, but does not override
   43 |                 void initPlugin(MainWindow *main_wnd) override;
      |                      ^~~~~~~~~~
src/sampleplugin.h:49:25: error: ‘QString SamplePlugin::getPluginTitle() const’ marked ‘override’, but does not override
   49 |                 QString getPluginTitle() const override;
      |                         ^~~~~~~~~~~~~~
src/sampleplugin.h:50:25: error: ‘QString SamplePlugin::getPluginVersion() const’ marked ‘override’, but does not override
   50 |                 QString getPluginVersion() const override;
      |                         ^~~~~~~~~~~~~~~~
src/sampleplugin.h:51:25: error: ‘QString SamplePlugin::getPluginAuthor() const’ marked ‘override’, but does not override
   51 |                 QString getPluginAuthor() const override;
      |                         ^~~~~~~~~~~~~~~
src/sampleplugin.h:52:25: error: ‘QString SamplePlugin::getPluginDescription() const’ marked ‘override’, but does not override
   52 |                 QString getPluginDescription() const override;
      |                         ^~~~~~~~~~~~~~~~~~~~
src/sampleplugin.h:58:22: error: ‘void SamplePlugin::showPluginInfo() const’ marked ‘override’, but does not override
   58 |                 void showPluginInfo(void) const override;
      |                      ^~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt6/QtCore/qnamespace.h:45,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:45,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qstringview.h:58,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qchar.h:666,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qstring.h:50,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/QString:1,
                 from ../../libs/libutils/src/pgmodelerplugin.h:29,
                 from src/sampleplugin.h:28,
                 from src/sampleplugin.cpp:19:
src/sampleplugin.h: In static member function ‘static QString SamplePlugin::tr(const char*, const char*, int)’:
/usr/include/x86_64-linux-gnu/qt6/QtCore/qtmetamacros.h:162:30: error: ‘SamplePlugin::staticMetaObject’ has incomplete type
  162 |     static const QMetaObject staticMetaObject; \
      |                              ^~~~~~~~~~~~~~~~
src/sampleplugin.h:32:17: note: in expansion of macro ‘Q_OBJECT’
   32 |                 Q_OBJECT
      |                 ^~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:45,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qstringview.h:58,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qchar.h:666,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qstring.h:50,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/QString:1,
                 from ../../libs/libutils/src/pgmodelerplugin.h:29,
                 from src/sampleplugin.h:28,
                 from src/sampleplugin.cpp:19:
/usr/include/x86_64-linux-gnu/qt6/QtCore/qnamespace.h:53:8: note: forward declaration of ‘struct QMetaObject’
   53 | struct QMetaObject;
      |        ^~~~~~~~~~~
src/sampleplugin.cpp: In constructor ‘SamplePlugin::SamplePlugin()’:
src/sampleplugin.cpp:26:9: error: ‘configurePluginInfo’ was not declared in this scope
   26 |         configurePluginInfo(getPluginTitle(),
      |         ^~~~~~~~~~~~~~~~~~~
src/sampleplugin.cpp:31:9: error: ‘config_action’ was not declared in this scope; did you mean ‘sigaction’?
   31 |         config_action = nullptr;
      |         ^~~~~~~~~~~~~
      |         sigaction
src/sampleplugin.cpp:32:9: error: ‘toolbar_action’ was not declared in this scope
   32 |         toolbar_action = nullptr;
      |         ^~~~~~~~~~~~~~
src/sampleplugin.cpp:33:9: error: ‘model_action’ was not declared in this scope
   33 |         model_action = nullptr;
      |         ^~~~~~~~~~~~
src/sampleplugin.cpp:34:9: error: ‘dbexplorer_tb’ was not declared in this scope
   34 |         dbexplorer_tb = nullptr;
      |         ^~~~~~~~~~~~~
src/sampleplugin.cpp: In destructor ‘virtual SamplePlugin::~SamplePlugin()’:
src/sampleplugin.cpp:39:16: error: ‘dbexplorer_tb’ was not declared in this scope
   39 |         delete dbexplorer_tb;
      |                ^~~~~~~~~~~~~
src/sampleplugin.cpp: At global scope:
src/sampleplugin.cpp:42:6: error: no declaration matches ‘void SamplePlugin::initPlugin(MainWindow*)’
   42 | void SamplePlugin::initPlugin(MainWindow *main_wnd)
      |      ^~~~~~~~~~~~
In file included from src/sampleplugin.cpp:19:
src/sampleplugin.h:43:22: note: candidate is: ‘void SamplePlugin::initPlugin(int*)’
   43 |                 void initPlugin(MainWindow *main_wnd) override;
      |                      ^~~~~~~~~~
src/sampleplugin.h:30:7: note: ‘class SamplePlugin’ defined here
   30 | class SamplePlugin: public QObject, public PgModelerPlugin {
      |       ^~~~~~~~~~~~
src/sampleplugin.cpp: In member function ‘void SamplePlugin::showPluginInfo() const’:
src/sampleplugin.cpp:83:9: error: ‘plugin_info_frm’ was not declared in this scope
   83 |         plugin_info_frm->show();
      |         ^~~~~~~~~~~~~~~
src/sampleplugin.cpp: At global scope:
src/sampleplugin.cpp:118:10: error: ‘QAction* SamplePlugin::getAction’ is not a static data member of ‘class SamplePlugin’
  118 | QAction *SamplePlugin::getAction(ActionId act_id) const
      |          ^~~~~~~~~~~~
src/sampleplugin.cpp:118:34: error: ‘ActionId’ was not declared in this scope
  118 | QAction *SamplePlugin::getAction(ActionId act_id) const
      |                                  ^~~~~~~~
src/sampleplugin.cpp:129:14: error: no declaration matches ‘QToolButton* SamplePlugin::getToolButton() const’
  129 | QToolButton *SamplePlugin::getToolButton() const
      |              ^~~~~~~~~~~~
src/sampleplugin.cpp:129:14: note: no functions named ‘QToolButton* SamplePlugin::getToolButton() const’
In file included from src/sampleplugin.cpp:19:
src/sampleplugin.h:30:7: note: ‘class SamplePlugin’ defined here
   30 | class SamplePlugin: public QObject, public PgModelerPlugin {
      |       ^~~~~~~~~~~~
make[2]: *** [Makefile:579: obj/sampleplugin.o] Error 1
make[2]: Leaving directory '/opt/pgmodeler/plugins/sampleplugin'
make[1]: *** [Makefile:47: sub-sampleplugin-make_first-ordered] Error 2
make[1]: Leaving directory '/opt/pgmodeler/plugins'
make: *** [Makefile:531: sub-plugins-make_first-ordered] Error 2

Additional info:

There are two glitches in the documentation : https://www.pgmodeler.io/support/installation

  1. The following commands doesn't work and should be rewritten using libxml­-2.0 instead (notice the dash):
$ pkg-config libxml­2.0 --cflags --libs
Package libxml­2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libxml­2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libxml­2.0' foun
  1. The usage of the qmake6 command on OS where qmake is pointing to qmake 5.
@swiss-knight swiss-knight changed the title Multiple errors in src/sampleplugin.h: Undefined interface & expected class-name before ‘,’ token Multiple build errors in src/sampleplugin.h: Undefined interface & expected class-name before ‘,’ token Mar 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant