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

Unable to compile Skyscraper on openSUSE Tumbleweed #328

Open
klandrith opened this issue Jan 20, 2022 · 9 comments
Open

Unable to compile Skyscraper on openSUSE Tumbleweed #328

klandrith opened this issue Jan 20, 2022 · 9 comments

Comments

@klandrith
Copy link

Describe the bug
Unable to build on openSUSE Tumbleweed. Compiler errors out.

To Reproduce
Compile on current openSUSE Tumbleweed (KDE Desktop). Qt5 dev packages are installed, including libqt5core5 packages.

Special circumstances

Terminal output

g++ -c -pipe -std=c++11 -O2 -Wall -W -D_REENTRANT -DVERSION=\"3.7.1\" -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtNetwork -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include -I. -I. -o main.o src/main.cpp src/main.cpp:47:10: fatal error: QCommandLineParser: No such file or directory 47 | #include <QCommandLineParser> | ^~~~~~~~~~~~~~~~~~~~ compilation terminated. make: *** [Makefile:623: main.o] Error 1

Technical information

  • Skyscraper version: 3.7.1
  • Internet connection:
  • OS: openSUSE Tumbleweed
  • OS Version: Current

Additional context

@muldjord
Copy link
Owner

Hi, Skyscraper is complaining about missing QCommandLineParser. I don't use OpenSUSE so I'm not of much help with this. Basically you are missing pieces of Qt5 in your system and you need to figure out how to install those. Then Skyscraper will compile as expected.

@klandrith
Copy link
Author

klandrith commented Jan 20, 2022 via email

@klandrith
Copy link
Author

So here is a list of all of the qt packages that I have installed. Is there a particular package that is needed by Skyscraper that is missing?

kyle  openSUSEDesktop  ~  pkg-config --list-all | grep --ignore-case qt

Qt5Core Qt5 Core - Qt Core module
Qt5DBus Qt5 DBus - Qt DBus module
Qt5Concurrent Qt5 Concurrent - Qt Concurrent module
Qt5Network Qt5 Network - Qt Network module
Qt5Sql Qt5 Sql - Qt Sql module
Qt5Test Qt5 Test - Qt Unit Testing Library
Qt5Xml Qt5 Xml - Qt Xml module
Qt5Gui Qt5 Gui - Qt Gui module
Qt5Widgets Qt5 Widgets - Qt Widgets module
Qt5Qml Qt5 Qml - Qt Qml module
Qt5QmlModels Qt5 QmlModels - Qt QmlModels module
Qt5QmlWorkerScript Qt5 QmlWorkerScript - Qt QmlWorkerScript module
Qt5Quick Qt5 Quick - Qt Quick module
Qt5QuickTest Qt5 QuickTest - Qt QuickTest module
Qt5QuickWidgets Qt5 QuickWidgets - Qt QuickWidgets module
Qt5PrintSupport Qt5 PrintSupport - Qt PrintSupport module
Qt5OpenGL Qt5 OpenGL - Qt OpenGL module
Qt5WebChannel Qt5 WebChannel - Qt WebChannel module
Qt5Location Qt5 Location - Qt Location module
Qt5Positioning Qt5 Positioning - Qt Positioning module
Qt5PositioningQuick Qt5 PositioningQuick - Qt PositioningQuick module
Qt5WebEngine Qt5 WebEngine - Qt WebEngine module
Qt5WebEngineCore Qt5 WebEngineCore - Qt WebEngineCore module
Qt5WebEngineWidgets Qt5 WebEngineWidgets - Qt WebEngineWidgets module
libKF5Attica libKF5Attica - Qt library to access Open Collaboration Services
KF5BluezQt KF5BluezQt - Qt wrapper for BlueZ 5 DBus API
kscreen2 kscreen2 - Qt Based library to manage screens with backends (xrandr, whatevercomesnext)
Qt5NetworkAuth Qt5 NetworkAuth - Qt NetworkAuth module
Qt5Script Qt5 Script - Qt Script module
Qt5ScriptTools Qt5 ScriptTools - Qt ScriptTools module
Qt5Sensors Qt5 Sensors - Qt Sensors module
Qt5SerialPort Qt5 SerialPort - Qt SerialPort module
Qt5TextToSpeech Qt5 TextToSpeech - Qt TextToSpeech module
Qt5Svg Qt5 Svg - Qt Svg module
Qt5VirtualKeyboard Qt5 VirtualKeyboard - Qt VirtualKeyboard module
Qt5WebSockets Qt5 WebSockets - Qt WebSockets module
Qt5WebView Qt5 WebView - Qt WebView module
Qt5X11Extras Qt5 X11Extras - Qt X11Extras module
Qt5XmlPatterns Qt5 XmlPatterns - Qt XmlPatterns module
phonon4qt5 phonon4qt5 - Phonon library needed to build applications
Qt53DCore Qt5 3DCore - Qt 3DCore module
Qt5Gamepad Qt5 Gamepad - Qt Gamepad module
Qt5SerialBus Qt5 SerialBus - Qt SerialBus module
Qt5Multimedia Qt5 Multimedia - Qt Multimedia module
Qt5MultimediaWidgets Qt5 MultimediaWidgets - Qt MultimediaWidgets module
Qt5RemoteObjects Qt5 RemoteObjects - Qt RemoteObjects module
Qt5RepParser Qt5 RepParser - Qt RepParser module
Qt5Scxml Qt5 Scxml - Qt Scxml module
Qt53DQuick Qt5 3DQuick - Qt 3DQuick module
Qt53DLogic Qt5 3DLogic - Qt 3DLogic module
Qt53DInput Qt5 3DInput - Qt 3DInput module
Qt5Bluetooth Qt5 Bluetooth - Qt Bluetooth module
Qt5Nfc Qt5 Nfc - Qt Nfc module
polkit-qt5-1 polkit-qt5-1 - Convenience library for using polkit with a Qt-styled API
polkit-qt5-agent-1 polkit-qt5-agent-1 - Convenience library for using polkit Agent with a Qt-styled API
polkit-qt5-core-1 polkit-qt5-core-1 - Convenience library for using polkit with a Qt-styled API, non-GUI classes
polkit-qt5-gui-1 polkit-qt5-gui-1 - Convenience library for using polkit with a Qt-styled API, GUI classes
Qt53DQuickInput Qt5 3DQuickInput - Qt 3DQuickInput module
Qt53DRender Qt5 3DRender - Qt 3DRender module
Qt53DQuickScene2D Qt5 3DQuickScene2D - Qt 3DQuickScene2D module
Qt53DQuickRender Qt5 3DQuickRender - Qt 3DQuickRender module
Qt53DExtras Qt5 3DExtras - Qt 3DExtras module
Qt53DAnimation Qt5 3DAnimation - Qt 3DAnimation module
Qt53DQuickExtras Qt5 3DQuickExtras - Qt 3DQuickExtras module
Qt53DQuickAnimation Qt5 3DQuickAnimation - Qt 3DQuickAnimation module
Qt5Designer Qt5 Designer - Qt Designer module
Qt5Help Qt5 Help - Qt Help module
Qt5UiPlugin Qt5 UiPlugin - Qt UiPlugin module
Qt5UiTools Qt5 UiTools - Qt UiTools module
Qt3Support Qt3support - Qt3support Library
QtCLucene Qtclucene - Qtclucene Library
QtCore Qtcore - Qtcore Library
QtDBus Qtdbus - Qt DBus module
QtDeclarative Qtdeclarative - Qtdeclarative Library
QtDesigner Qtdesigner - Qtdesigner Library
QtDesignerComponents Qtdesignercomponents - Qtdesignercomponents Library
QtGui Qtgui - Qtgui Library
QtHelp Qthelp - Qthelp Library
QtMultimedia Qtmultimedia - Qtmultimedia Library
QtNetwork Qtnetwork - Qtnetwork Library
QtOpenGL Qtopengl - Qtopengl Library
QtScript Qtscript - Qtscript Library
QtScriptTools Qtscripttools - Qtscripttools Library
QtSql Qtsql - Qtsql Library
QtSvg Qtsvg - Qtsvg Library
QtTest Qttest - Qt Unit Testing Library
QtUiTools Qtuitools - Qtuitools Library
QtXml Qtxml - Qtxml Library
QtXmlPatterns Qtxmlpatterns - Qtxmlpatterns Library
Qt5WaylandClient Qt5 WaylandClient - Qt WaylandClient module
Qt5WaylandCompositor Qt5 WaylandCompositor - Qt WaylandCompositor module

Thanks.

@muldjord
Copy link
Owner

QCommandLineParser is part of the Qt5 core library. It needs at least Qt 5.2 to be available (that's where QCommandLineParser was introduced). If you have that I don't know why it won't find it on OpenSUSE. Sorry.

@klandrith
Copy link
Author

Ok, so I found the problem, but still need a little help. Apparently, QCommandLineParser, and QCommandLineOptions are not stored in /usr/include//QtCore/ like your files assume, but is stored in /usr/include/qt5/QtCore. I tried manually changing that in the auto-generated Makefile, but then I get the following errors.

kyle  openSUSEDesktop  ../skyscraper-3.7.1  make

g++ -c -pipe -std=c++11 -O2 -Wall -W -D_REENTRANT -DVERSION="" -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/qt5/QtCore -I/usr/include/QtNetwork -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include -I. -I. -o main.o src/main.cpp
In file included from /usr/include/qt5/QtCore/QtGlobal:1,
from src/main.cpp:26:
/usr/include/qt5/QtCore/qglobal.h:67:10: fatal error: QtCore/qtcore-config.h: No such file or directory
67 | #include <QtCore/qtcore-config.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:620: main.o] Error 1

I think that I'm going to spin up a virtual machine and build an AppImage on an Ubuntu VM of your latest release just to side step all this file path nonsense.

@muldjord
Copy link
Owner

It's really odd that an OpenSUSE Qt5 installation doesn't have the files in the location qmake generates the makefile for. There's nothing in my files that tells the system to look for the files a specific place. That's all done by qmake.

An AppImage should work.

@klandrith
Copy link
Author

klandrith commented Jan 20, 2022 via email

@klandrith
Copy link
Author

klandrith commented Jan 21, 2022

It's really odd that an OpenSUSE Qt5 installation doesn't have the files in the location qmake generates the makefile for. There's nothing in my files that tells the system to look for the files a specific place. That's all done by qmake.

An AppImage should work.

OK, so I got everything to compile and install. Here's the low down...

I had thought that I had qmake installed via a community package, which I had originally, but I uninstalled that and installed it via the openSUSE repos via the package libqt4-devel, which is the package that cnf qmake returns. However, this defaults qmake to the qt4 version. To get qmake that is made for qt5, one needs to install libqt5-qtbase-common-devel, which can be installed via sudo zypper install -t pattern devel_qt5, along with the rest of the needed development files via sudo zypper install -t pattern devel_basis.

Then, in order to to get Skyscraper to compile with the proper qt version, one can either change the QTDIR environmental variable, or do as I did and simply edit the update_skyscraper.sh script and replace the qmake command with /usr/bin/qmake-qt5 and voila it compiles just fine.

So, to summarize...to install Skyscraper on openSUSE:

sudo zypper install libqt4-devel
sudo zypper install -t pattern devel_basis
sudo zypper install -t pattern devel_qt5

Change qmake command in update_skyscraper.sh script to /usr/bin/qmake-qt5 or update QTDIR environmental variable to point to qt5.

Hope this helps someone in the future.

@muldjord
Copy link
Owner

Thank you for the information. It's good to have it here for others to see.

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

2 participants