the brisa's (download_and_compile) script started doing funny things since fglauncher's introduction to the 3.4 release branch on SF.
the QT5 code written for fglauncher requires C++ members otherwise not provided with system-side QT libraries found on the stable versions of debian based distros, but instead requires developmental QT5 libraries/external packages(that might conflict with the QT environment).
i'll provide the compile log, along with the source code for my system-side native (v5.2.1) QT5 libraries that Brisa's d&c script depends on for my Ubuntu 14.04, namely the "qt5-default" package on Ubuntu, it results in compile error, so here's the full dependancies in Brisa's d&c script for FlightGear:
- Code: Select all
# FG
PKG="$PKG libopenal-dev libudev-dev qt5-default libdbus-1-dev libpng12-dev libplib-dev"
this will result in compilation failure on Ubuntu's stable Trusty's 14.04, Linux Mint Qiana and Olivia, and possibly others.
for this to work you'll need Ubuntu's Utopic 14.10 or Ubuntu's "next" 15.04 to get appropriate version of libraries that build.
the code that the fglauncher is written upon depends on (v5.3) QT5 source libraries, these are the cause of the errors.
here's Ubuntu's system-side QT5 versions for their appropriate releases, you need v5.3 QT5 libraries or more: http://packages.ubuntu.com/trusty/qtbase5-dev
disclaimer, i'm not a C++ programmer, but hopefully i have some principles to atleast pinpoint this issue.
here's proof from the build log that "make" did infact include QT's system-side libraries:
- Code: Select all
-I/usr/include/qt5 -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64
first we begin with our compiler error:
- Code: Select all
[ 23%] Built target fgcom
[ 23%] Automoc for target fglauncher
[ 23%] Built target fglauncher_automoc
[ 23%] Building CXX object src/GUI/CMakeFiles/fglauncher.dir/QtLauncher.cxx.o
In file included from /home/hamza/build/FlightGear/stable/flightgear/src/GUI/QtLauncher.cxx:35:0:
/home/hamza/build/FlightGear/stable/build/flightgear/src/GUI/ui_Launcher.h: In member function ‘void Ui_Launcher::retranslateUi(QDialog*)’:
/home/hamza/build/FlightGear/stable/build/flightgear/src/GUI/ui_Launcher.h:588:26: error: ‘class QPlainTextEdit’ has no member named ‘setPlaceholderText’
commandLineArgs->setPlaceholderText(QApplication::translate("Launcher", "--option=value --prop:/sim/name=value", 0));
^
make[2]: *** [src/GUI/CMakeFiles/fglauncher.dir/QtLauncher.cxx.o] Error 1
make[1]: *** [src/GUI/CMakeFiles/fglauncher.dir/all] Error 2
make: *** [all] Error 2
here is the journey for the error:
1 - FlightGear's 3.4 "QTLauncher.cxx" includes "ui_Launcher.h"
[#include "ui_Launcher.h"]
2 - declaring pointer "commandLineArgs" of type "QPlainTextEdit", in "ui_Launcher.h" .
[QPlainTextEdit *commandLineArgs;]
3 - pointer "commandLineArgs" given class "QPlainTextEdit" and assigned address, in "ui_Launcher.h".
[commandLineArgs = new QPlainTextEdit(groupBox_2);]
4 - "commandLineArgs" gets called to access member method "setPlaceholderText", in "ui_Launcher.h."
[commandLineArgs->setPlaceholderText(QApplication::translate("Launcher", "--option=value --prop:/sim/name=value", 0));]
5 - system-side QT5 library "/usr/include/qt5/QtWidgets/qplaintextedit.h" gets called by "commandLineArgs" to find "setPlaceholderText" implementation and cannot find it!
thus the error,
- Code: Select all
error: ‘class QPlainTextEdit’ has no member named ‘setPlaceholderText’
commandLineArgs->setPlaceholderText(QApplication::translate("Launcher", "--option=value --prop:/sim/name=value", 0));
this method has not been implemented yet in the class prior to QT 5.3:
http://doc.qt.io/qt-5/qplaintextedit.html
James Turner has released a commit but i don't know if it has been merged into release/3.4 yet?
http://sourceforge.net/p/flightgear/flightgear/ci/a3d3e81a86c8c5485506335cb5b8aa0714b69e88/