Statically installing Qt4 such that OpenCV can detect the installed Qt4 libraries - qt

I am currently using Ubuntu 14.04 LTS.
How can I statically build Qt 4.8.5 -
https://download.qt.io/archive/qt/4.8/4.8.5/qt-everywhere-opensource-src-4.8.5.tar.gz
such that when I cmake OpenCV 2.4.13 -
https://github.com/opencv/opencv/archive/2.4.13.zip
it correctly identifies the location of Qt4 ?
When I cmake OpenCV after I have installed Qt4 in /usr/local/qt4-static/, the find_package(Qt4 REQUIRED QtCore QtGui QtTest) function call within opencv-2.4.13/cmake/OpenCVFindLibsGUI.cmake fails because it cannot find qmake. Also, upon running the qmake -query in the terminal, Ubuntu says that qmake is not installed, when it clearly in /usr/local/qt4-static/.
How should I go about this so OpenCV cmake correctly recognizes Qt4 ?

Build Qt
Extract the source-code and run ./configure && make and then sudo make install. It should create all necessary configuration to run qmake in any folder (system-wide).
Additional: create a symlink/export (use only if make install did not work for you)
You need to promote qmake to $PATH or create a symlink, but this is usually done when you run sudo make install after make in the Qt source-folder.
root:/home# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
Symlink (permanently)
ln -s /path/to/qmake /usr/sbin/qmake
or
export (temporary)
export PATH=$PATH:/folder/of/qmake
Afterwards qmake -v is working whereever you are
root:/tmp qmake -v
QMake version 3.1
Using Qt version 5.10.1 in /usr/local/Qt-5.10.1/lib
If your project still cannot determine the location of Qt, read the pro/pri/cmake file to understand how it looks for the path.

Related

Using qmake without Qt Overhead?

We have some smaller libraries we use in our bigger project quite often.
Still we compile and run the unit tests of these smaller libraries as independent CI Jobs.
Most of these libs use QMake as buildtool, not using Qt in any way. And we started to move our CI-Jobs into docker containers. Now I realized that I always have to get qt5-default (on Ubuntu 16) for qmake to work. Is this intended? This gives quite a signifacant overhead. Does anybody know a way, to use qmake on Ubuntu 16 wihtout getting the whole Qt instalation on board?
You don't actually need Qt installed for qmake to work. The reason why you need qt5-default is that most linux distributions provide both Qt5 and Qt4, which have the same binaries, for example they both have a version of qmake, which would both get installed to /usr/bin. In order to fix that problem Qt5 installs to /usr/lib/.../qt5 and Qt4 to /usr/lib/.../qt4, and the qt5-default package creates symlinks from there to /usr/bin
For Ubuntu , ... is x86_64-linux-gnu!
You can choose between:
Install only the qt5-qmake package in your docker container and create a symlink /usr/bin/qmake -> /usr/lib/.../qt5.*
Specify the full path to the qmake binary when building your software, inside your {travis, gitlab, jenkins} CI config
Add /usr/lib/.../qt5/bin to your $PATH
* The proper place for a manually created symlink would actually be /usr/local/bin because if you have the symlink in /usr/bin, installing qt5-default package would fail because the symlink qt5-default wants to create would already exist. However, you are in a docker container and can actually control whether qt5-default gets installed, and if you create the symlink in /usr/local/bin you have to make sure to add /usr/local/bin to your $PATH, which is overkill for that scenario.

how to change opencv configrations in cmake to support qt

I'm new to opencv. I installed it on my computer using cmake following the tutorial in their website.
mkdir Desctop/opencv
cd Desctop/opencv
git clone https://github.com/Itseez/opencv.git
cd opencv
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
And to compile with opencv using cmake, I add the CMakeLists.txt file in the cpp file directory then execute
cd <cpp file directory>
cmake .
make
But now I know more about opencv. I know that I can make GUI windows with it; I can make buttons, scroll bars and many other UI controls.
But I can't use the GUI tools unless I integrated cmake with QT.I'm not sure how should it be, but I thing it would be something like
cmake -D WITH_QT=ON ..
Reference
But the problem is that I've already installed opencv and I don't know how can I change it's configurations to use QT.
I tried to install cmake-gui to change the opencv installation configurations but I didn't find anything for opencv in the program.
My questions
Do I need to re-install opencv or it's possible to change the settings or changing the content of CMakeLists.txt file?
How can I change the configurations of the current opencv installation so it support QT?
would I need to change the CMakeLists.txt file after changing opencv's configurations?

qmake: could not find a Qt installation of '' - Setting up qmake?

qmake: could not find a Qt installation of ''
This thread was not of any help to me. qmake: could not find a Qt installation of ''.
How can I get qmake to recognize where the Qt folder is?
Right now it is installed in /opt/Qt5.1.0.
Have you installed the qt5-default ? You need to do this in addition to running the Qt supplier .run file.
sudo apt-get install qt5-default
This message shown by qtchooser app.
To setup it properly, you should make conf files in /etc/xdg/qtchooser/
for example:
$ ls -1 /etc/xdg/qtchooser/
default.conf
qt-4.8.5.conf
qt-5.1.0.conf
each file has two lines: path to bin, path to lib:
$ cat /etc/xdg/qtchooser/default.conf
/opt/Qt/4.8.5/bin
/opt/Qt/4.8.5/lib
additional info: man qtchooser
The solution for me on this problem was to specify the QT version, as this message was being generated by /usr/bin/qtchooser
So in my case, it was QT4 I was trying to use, and running:
qmake
generated the error (could not find a Qt installation of '')
qmake -qt=qt4
fixed that error though. In my case, it was a Ruby Gem trying to compile with qmake, so I couldn't get it to pass in that extra command line argument, so I instead added this to my profile
export QT_SELECT=qt4
And now QT4 runs just fine on my Ubuntu system.
For me the symlink to default.conf was missing in /usr/share/qtchooser. It wasn't enough to put it into /etc/xdg/qtchooser.

How to configure qmake so my app is install with "make install"?

I have a written a small qt app that I use qmake to build, but I am missing the make install target.
How to configure qmake so my binary is copied to /usr/local/bin/ when I run "make install"?
qmake
make
make install
What do I need to add to my .pro file to get the "install" target and how do I control what file and path will be used?
Btw the install will be on Linux pc:s like Debian and Ubuntu.
Add something like this to you .pro file
target.path = /usr/local/bin/
INSTALLS += target

compiling musescore for uCLinux with QT and cmake

I've try few things but I still have this error when trying to cmake for blackfin:
CMake Error at CMakeLists.txt:116 (message):
Fatal error: QT (version >= 4.5.0) required. Cmake tries to detect QT4 by
searching for 'qmake' in your PATH.If you have QT4 installed, make sure
qmake is found in your PATH. If you compiled QT4 yourself make sure your
new qmake ist found _first_ in your PATH.
I'm trying to compile the source of musescore 0.9.5 to keep it compatible with the existing version of QT in uClinux options
What I did is to compile the uClinux kernel with QT lib so I can have the suitable embedded QT.
then I modified the Makefile of musescore to build with uclinux compilers. I've try different things so I show here the latest trial:
bfin:
mkdir build;
mkdir install; \
cd build;
cmake -DCMAKE_TOOLCHAIN_FILE=bfin.cmake -DCMAKE_VERBOSE_MAKEFILE=TRUE -\
DQT_QMAKE_EXECUTABLE=/home/william/Development_new/Music_Recognition/code/uCLin\
ux/rev2011R1/uclinux-dist/lib/qt-embedded/build-qt-embedded-linux-opensource-sr\
c-4.5.1/bin -libdir=/home/william/Development_new/Music_Recognition/cod\
e/uCLinux/rev2011R1/uclinux-dist/lib/qt-embedded/build-qt-embedded-linux-openso\
urce-src-4.5.1/lib \
-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
mscore;
in the CMakeLists.txt I did add:
link_directories(/home/william/Development_new/Music_Recognition/code/uCLinux/r\
ev2011R1/uclinux-dist/lib/qt-embedded/build-qt-embedded-linux-opensource-src-4.\
5.1/bin)
SET(CMAKE_MODULE_PATH /home/william/Development_new/Music_Recognition/code/uCLi\
nux/rev2011R1/uclinux-dist/lib/qt-embedded/build-qt-embedded-linux-opensource-s\
rc-4.5.1/bin)
SET(CMAKE_PREFIX_PATH /home/william/Development_new/Music_Recognition/code/uCLi\
nux/rev2011R1/uclinux-dist/lib/qt-embedded/build-qt-embedded-linux-opensource-s\
rc-4.5.1/bin)
SET(QT_QMAKE_EXECUTABLE /home/william/Development_new/Music_Recognition/code/uC\
Linux/rev2011R1/uclinux-dist/lib/qt-embedded/build-qt-embedded-linux-opensource\
-src-4.5.1/bin)
my bfin.cmake look like that:
# this one is important
SET(CMAKE_SYSTEM_NAME Linux)
#this one not so much
SET(CMAKE_SYSTEM_VERSION 1)
#
SET (BFIN "/opt/uClinux/bfin-uclinux")
# specify the cross compiler
SET(CMAKE_C_COMPILER ${BFIN}/bin/bfin-uclinux-gcc)
SET(CMAKE_CXX_COMPILER ${BFIN}/bin/bfin-uclinux-g++)
SET(CMAKE_LINKER ${BFIN}/bin/bfin-uclinux-ld)
#/opt/uClinux/bfin-uclinux/bfin-uclinux/runtime/usr/lib
LINK_DIRECTORIES("${BFIN}/usr/lib")
SET(CMAKE_FIND_ROOT_PATH
/opt/uClinux/bfin-uclinux/bfin-uclinux
/opt/uClinux/bfin-linux-uclibc
/opt/uClinux/bfin-linux-uclibc/bfin-linux-uclibc/runtime)
# search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
Thanks in advance for the help,
William
You need to put qmake in your $PATH. If you prefer to use QT_QMAKE_EXECUTABLE it has to point to the actual qmake binary and not the directory.
That being said, MuseScore 0.9.5 is a very very old version of MuseScore, the current version is 1.1 and 1.2 is coming soon. Check http://musescore.org for more information about MuseScore and don't hesitate to contact the developers on #musescore on freenode.net or on the developer mailing list at http://musescore.org/mailing-list

Resources