Skip to content

Compile YUView

onoffpt edited this page Jan 20, 2022 · 42 revisions

If you want to compile YUView from source, here is a short how-to. We use qmake for the project so there is actually not much to consider when compiling the sources. Qt should take care of everything necessary to generate the executable. However, here is a short introduction for the supported platforms:

Requirements

You will require a C++ 14 compiler as well as Qt. The minimum Qt version that we test is 5.9.5. We are building YUView in Github actions on Windows, Ubuntu and MacOs. Please check out the workflow file in the repository to see how exactly we build YUView. The file is in .github/workflows.

Windows

On windows you will have to install Qt and a compiler. We use the Visual Studio compiler and MinGW. Both should work. If you installed this you can just compile using the YUView.pro file:

C:\Qt\somewhere\qtbase\bin\qmake.exe YUView.pro
nmake  # For visual studio
make   # For MinGW

QtCreator

You can also open the YUView.pro file in the QtCreator. Here you will have to configure the project to use a compiler (Qt should auto detect the Visual Studio and MinGW compilers) and hit the build button.

Visual Studio

One more option is to let qmake create a visual studio project file for you:

qmake.exe -tp vc

Visual Studio Code

If you are using visual studio code you can compile YUView in there as well. The following prerequirements must be met:

  • Installed Qt
  • Installed C++ build environment (either install Visual Studio or just the Build environment)
  • Make sure "terminal.integrated.automationShell.windows": "cmd.exe" is set in the config so that this is not called in powershell. If this does not work, try selecting the default shell (Ctrl+Shift+P and type default shell).

Use the following task.json entry to compile using qmake and nmake. Correct the paths to your needs.

    "tasks": [
        {
            "label": "Qmake debug",
            "type": "shell",
            "windows":{
                "command": "call \"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Auxiliary\\Build\\vcvars64.bat\" && \"C:\\Qt\\5.12.6\\msvc2017_64\\bin\\qmake.exe\" CONFIG+=debug",
            },
            "options": {
                "cwd": "${workspaceFolder}/build"
            },
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "Build",
            "type": "shell",
            "windows":{
                "command": "call \"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Auxiliary\\Build\\vcvars64.bat\" && nmake",
            },
            "options": {
                "cwd": "${workspaceFolder}/build"
            },
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]

The following launch.json configuartion uses a qt5 natvis file to decorate Qt types while debugging:

    "configurations": [
        {
            "name": "(Windows) Launch",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/debug/YUView.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "visualizerFile": "${workspaceFolder}/.vscode/qt5.natvis"
        }

MAC OS

On MacOS, compilation is simple as well. You need to install XCode (from the app store) as well as Qt (from the Qt Download page or install it through homebrew). Now you can open the YUView.pro file using the QtCreator, hit configure and build YUView. Alternatively, compilation also works from the command line using qmake and make.

Linux

On Linux systems compiling is similarly easy. You have to install Qt and a compiler. Most Linux distributions ship with the gcc compiler so there is no need to install a compiler.

When Qt is installed, you can use qmake or the QtCreator to build YUView. On the command line you can just use qmake and then make. Using the creator, just open the YUView.pro file, configure the project to use a compiler (Qt should auto detect gcc) and hit the build button. Additionally you can install the program running sudo make install. This will also install a desktop entry.

Unfortunately, it depends a little on your distribution how to obtain Qt. Here are some hints for distributions that we tested:

Ubuntu

Ubuntu 18.x

On Ubuntu 18, Qt5 can be easily installed using apt:

  • If you don't have these installed already: sudo apt install git build-essential
  • sudo apt install qt5-default
  • qmake
  • make

Ubuntu 16.x

On Ubuntu 16.04, Qt5 can be easily installed using the apt install tool:

  • If you don't have these installed already: sudo apt install git build-essential
  • sudo apt install qt5-default libqt5opengl5-dev.
  • qmake
  • make

Ubuntu 14.x

Unfortunately, qt5 is not present in the package repository for older Ubuntu versions. In Ubuntu 14.x for example, qt5 is not in the repositories. One option is to go to the qt homepage and download the latest qt version from here. Start the installer and select the latest qt-gcc version. A second option is to install qt from the following repositories:

  • sudo add-apt-repository ppa:beineri/opt-qt571-trusty -y
  • sudo apt-get update -qq
  • sudo apt-get install -qq qt57base; source /opt/qt57/bin/qt57-env.sh

Arch Linux

On Arch, just use pacman to update the packages/install Qt and compilation should work using qmake and make. If you selected the default installation, Qt should already be installed.

Hints

Error cannot find -lGL

If you get the error cannot find -lGL the openGL libraries were not found. These libraries are required by Qt. You will have to install these for your linux distribution. However, the libGL might already be on your system, but the compiler could just not find it. You can try locate libGL to see if the library is already installed. If yes, you can just link it to a library search path like /usr/lib. For example on Ubuntu 15.4 this works:

sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so

Debug build

If you want to compile a debug version of YUView, you can run qmake with the CONFIG+=debug parameter.

Select a compiler

If you have multiple compilers you can specify a mkspec to tell qmake which one to use. On Ubunut the path to the mkspecs is /usr/lib/x86_64-linux-gnu/qt5/mkspecs/ but this may differ for your system. E.g. to use the clang compiler on linux do:

qmake -spec linux-clang ../YUView.pro