Skip to content
This repository has been archived by the owner on Jan 28, 2022. It is now read-only.

developer qt_ide

Markus Zehnder edited this page Dec 6, 2019 · 15 revisions

This topic is currently being created and worked on!

The development of the YIO Remote software doesn't require a physical YIO Remote or a Raspberry Pi! The software also runs on Linux, macOS and Windows desktops :-) Of course certain low level functionality won't work, but otherwise it's fully functional including integrations. It's a great way to try out the software and developing new features without the crosscompile and device deployment overhead.

The software of the remote is written in Qt C++ and QML with Qt Creator.

The build environment consists of the following parts:

Requirements

For desktop development only (without cross compilation):

  • Supported Linux, macOS or Windows PC with admin / root privileges.
    • See supported platforms.
    • At the moment the YIO remote software is actively developed on Linux, macOS and Windows.
      Other platforms are neither tested nor currently supported in the qmake configuration. Please feel free to add other platforms!
  • Internet connection for the Qt installer and to download the YIO projects.
  • Recommended: Git client

For Buildroot cross compilation:

  • A Linux box or VM, otherwise Docker Desktop.
  • At least 20 GB of free space. A SSD is highly recommended.
  • At least 4 GB RAM. More RAM = better file system caching.
  • Fast CPU. More cores = quicker build times.
  • Internet connection: packages will be downloaded during the build.

See Developer VM Setup on how to setup an Ubuntu Linux VM for development.

Installing Qt

In order to get the code running on your machine you need to download and install the Qt open source license edition for Windows, Mac or Linux. The YIO Remote software is written for Qt 5.12 which is the runtime on the RPi Zero. Therefore it's recommended to use the current 5.12.x release for development. Newer releases should work as long as no new features are being used.

The required Qt components and other OS specific pre-requisits are listed below. The Developer and Designer Tools are preselected and are required if you want the Qt Creator IDE.

In case you need to add, remove or change components post-install, start the MaintenanceTool application in the root of the Install directory (C:\Qt or ~/Qt by default).

Linux

Please use the downloaded Qt installer and not an available version from your Linux distribution. This avoids confusion caused by different Qt versions and developer tools. Each version of a Linux distribution usually comes with a different Qt version. If you download and install Qt for yourself you can independently update the OS and the Qt environment.

The core developers are using Ubuntu desktop x64 (18.04 and 19.10). Other distros should work as well as long as they are supported.

The downloaded Qt online installer might not have the file execute flags set. Open a terminal and execute:

chmod +x qt-unified-linux-*.run

Start the Qt online installer and select where to install it:

Qt install directory

Selec the following Qt components from the latest 5.12.x release:

  • Desktop gcc 64-bit
  • Sources
  • Qt Virtual Keyboard
  • Qt Network Authorization

Qt components

macOS

XCode is required and must be installed to use Qt Creator on macOS. It should be launched at least once to complete initialization and to install the command line developer tools.

Required Qt components:

  • macOS
  • Sources
  • Qt Virtual Keyboard
  • Optional: iOS if you wish to run it on your Apple mobile device too (experimental & no priority at the moment)

The configuration of a Raspberry Pi cross compilation toolchain with Buildroot has been abandoned. It seems possible but very complicated. Please contact us if you have a working solution!
Use the Docker image for cross compilation and image creation. See Setup Buildroot.

Windows 10

Required Qt components:

  • All MSVC entries
  • MinGW 7.3.0 64-bit
  • Sources
  • Qt Virtual Keyboard
  • Qt Debug Information Files

The configuration of a Raspberry Pi cross compilation toolchain with Buildroot has not been looked at. Please contact us if you have a working solution!
Use the Docker image for cross compilation and image creation. See Setup Buildroot.

Qt Creator IDE

Project Organization and Checkout

The YIO software is devided into multiple modules. Each module has its own Git repository:

  • remote-os contains the custom Linux build for Raspberry Pi Zero
  • remote-software contains the main remote application software
  • Each integration is in its own integration.xy repository

To build the YIO Remote software the modules must be checked out in the same root folder. The root folder is from now on referred to as $YIO_SRC. See section qmake Environment Variables for further information.

Checkout projects:

# define root directory for project checkout
YIO_SRC=~/projects/yio

mkdir -p $YIO_SRC
cd $YIO_SRC
git clone https://github.com/YIO-Remote/remote-os.git
git clone https://github.com/YIO-Remote/remote-software.git
git clone https://github.com/YIO-Remote/integration.dock.git
git clone https://github.com/YIO-Remote/integration.home-assistant.git
git clone https://github.com/YIO-Remote/integration.homey.git
git clone https://github.com/YIO-Remote/integration.openweather.git
git clone https://github.com/YIO-Remote/integration.roon.git
git clone https://github.com/YIO-Remote/integration.spotify.git

# switch to development branch
cd $YIO_SRC/remote-os
git checkout dev
cd $YIO_SRC/remote-software
git checkout dev
cd $YIO_SRC/integration.dock
git checkout dev
cd $YIO_SRC/integration.home-assistant
git checkout dev
cd $YIO_SRC/integration.homey
git checkout dev
cd $YIO_SRC/integration.spotify
git checkout dev

The folder structure should look like this now:

Project folder structure

qmake Environment Variables

The following environment variables are optional but highly recommended to define in your user account:

  • YIO_SRC: defines the root directory of the YIO projects
  • YIO_BIN: defines the output directory of the binary builds

TODO Buildroot variables

Qt Creator Configuration

TODO

Cross Compilation for RPi Zero

Define Build Kit

Device Deployment

Remote Debugging

Clone this wiki locally