Compilation failed: recipe for target 'all' failed

• Apr 3, 2018 - 12:48

Hello,

I am trying to compile MuseScore (because I want to add an Ukulele Low G Tablature -- The 'Low G' exists, but not as tablature notation, wich is more important than the scores, as the notes do change), without success.

I have a current Ubuntu system, which brings Qt 5.9, I followed the steps in the manuals, but running make I get this:

...
Generating MOC compilation mocs_compilation.cpp
make[3]: Leaving directory '/home/paul/src/github/MuseScore/build.release'
[  0%] Built target awl_autogen
make[3]: Leaving directory '/home/paul/src/github/MuseScore/build.release'
[  0%] Built target mops2
make[2]: Leaving directory '/home/paul/src/github/MuseScore/build.release'
Makefile:151: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/paul/src/github/MuseScore/build.release'
Makefile:49: recipe for target 'release' failed
make: *** [release] Error 2

Any ideas what I am doing wrong?

Thank you very much.
Paul.


Comments

"because I want to add an Ukulele Low G Tablature -- The 'Low G' exists, but not as tablature notation,"

In standard notation, the Uke Low G is in "All Instruments" or type "uku" in the search box
It exists as tablature, you have only to change the Staff type (dropdown list, right column, see image below)

low G.jpg

So, you can get various templates:
1) TAB only: TAB low G.mscz
2) Standard + Linked Tab: Linked TAB LowG.mscz
3) Standard + no linked Tab, if preferred (you have to copy-paste the content of a staff in the other) : Standard + not linked TAB staff.mscz

@paulwellnerbou, see the Ubuntu compile instructions under "Important Note: It is now necessary to install Qt 5.8, or later".

Try installing Qt 5.9 from the Qt website (via the online installer) rather than using the Ubuntu Qt packages. If you really want to use the Ubuntu package, make sure it is the development packages (name ends in "-dev" rather than just the runtime packages).

If you have installed Qt already then run qmake -version to check that it is in $PATH.

In reply to by paulwellnerbou

As @Jojo said, the real error is probably much higher up in the log. Without seeing the full log we're just guessing. (My guess is that Qt is installed but not in $PATH.)

Please run your compile commands again and redirect the output into a text file so that we can see.


make revision
make debug 2>&1 | tee compile-log.txt
sudo make installdebug 2>&1 | tee -a compile-log.txt # only if previous command was successful

(Notice that the second tee command has -a to append to the file rather than overwriting it.)

Take the compile-log.txt text file and attach it to your reply here. (You may want to open it in a text editor first and remove any personally identifying information, such as your username. Just do Find and Replace (Ctrl+H) and replace your username with "USER" or similar).

In reply to by shoogle

Running make debug really exposes some warnings about some possible missing Qt things, available here (I did a make clean before): https://privatebin.net/?66111f5c1ab75759#FXhM1fmrQQ3zwu68NPKV03BeIxoxGa…

If there's something missing, maybe we can identify it to update and fix the documentation on how to compile MuseScore with the Ubuntu Qt packages. I would suggest anyway to provide a Dockerfile, as proof of concept environment.

In reply to by paulwellnerbou

Line 3 of your compile log shows the contents of $PATH. If you installed Ubuntu's Qt development packages I would expect to see /usr/lib/x86_64-linux-gnu/qt5/bin in $PATH, but it's not there. It's possible that the packages have changed since the last time I used them and now qmake is a symlink in /usr/bin rather than Qt's bin being added to $PATH. What happens if you try to run qmake -version?

Further down it complains about QtWebEngine being missing, but probably all of Qt missing. Either it's not installed, or if it is installed then it's not in $PATH. You could try sudo apt install libqt5webengine5, and double-checking all the other Qt development modules are installed too:

sudo apt-get install libqt4-dev qtbase5-dev qttools5-dev qttools5-dev-tools qtquick1-5-dev \
qtscript5-dev libqt5xmlpatterns5-dev libqt5svg5-dev libqt5webkit5-dev

However, I highly recommend using Qt provided by Qt rather than Qt provided by Ubuntu. Not only is it the official version of Qt, it also makes it easier to upgrade, downgrade, and even install multiple versions of Qt, so that you are always using the same version as the MuseScore developers. It's free for open source and doesn't interfere with system libraries.

By the way, there are Docker images for building MuseScore. If you want to use them you need to mount the MuseScore's code directory into the image. Run this command from MuseScore's code directory:

docker run -itv "${PWD}:/MuseScore" "musescore/musescore-x86_64:$docker_tag" /bin/bash

This will put you in a terminal inside the Docker image. From there you can do cd /MuseScore to access the code directory.

The Docker files are mainly used for building the AppImages. If you want to build an AppImage then run the script /MuseScore/build/Linux+BSD/portable/x86_64/Recipe.

If you want to build MuseScore normally (i.e. not as an AppImage) then you will need to study the Recipe file to see how to set $PATH.

You will probably have more luck using the Docker images from the 2.3 branch than master.

In reply to by shoogle

"It's possible that the packages have changed since the last time I used them and now qmake is a symlink in /usr/bin rather than Qt's bin being added to $PATH. "
If Ubuntu is anything like Debian (which I assume) than OP is most likely using qtchooser which provides a binary and a link farm that redirects to the currently active binaries.
qtchooser -list-versions will show all available/installed versions, qtchooser -print-env will show the currently active setup. You can switch versions by setting the environment variable QT_SELECT to one of the versions listed.

In reply to by shoogle

You suggest:
"sudo apt-get install libqt4-dev qtbase5-dev qttools5-dev qttools5-dev-tools qtquick1-5-dev \
qtscript5-dev libqt5xmlpatterns5-dev libqt5svg5-dev libqt5webkit5-dev"

But those missing CMake test are from the qtwebengine5-dev package. Better add that to the build dependencies.

In reply to by rmattes

Ah thanks, I couldn't find the dev package for QtWebEngine because it is missing the "libqt5" prefix. So what's needed it probably:

sudo apt install qtwebengine5-dev

However, I still recommend using the official Qt. If someone else wants to test which Ubuntu packages are needed and update the instructions then be my guest.

libqt4-dev and libqt5webkit5-dev are probably not needed any more.

In reply to by shoogle

Thanks,
oh, that's great, that there are docker images. I will try them next time. This makes it much more flexible and independent from the current state of my system, so that I can use the official Qt distribution without affecting other work on my system.

Thanks very much for the detailed reply. qtquick1-5-dev is not available, but anyway, I'll try with Qt next time.

In reply to by paulwellnerbou

Used properly the official Qt distribution never interferes with system libraries, no matter whether you are inside or outside a Docker image.

Only Ubuntu packages interfere with system libraries. ;)

In reply to by shoogle

OP's first log file shows the meta object comiler did run, and that run was invoked from a CMake generated makefile - with missing Qt dependencies (or Qt's binaries not in PATH) neither would have worked.
If I read OP's compile log correctly, the build fails because of the well-known precompiled header problem (which I assumed got fixed some time ago?).

Do you still have an unanswered question? Please log in first to post your question.