Skip to content

Qt6 moving towards cmake #3964

Description

@pljones

What is the current behaviour and why should it be changed?

Currently Jamulus is built predominantly with qmake and a Jamulus.pro project file specifying the cross-platform build specification.

Qt6 is moving away from the use of qmake and project files. For example, it is no longer possible to use qmake and androidinstallqt to produce an Android multi-ABI APK/AAB.

The recommended tooling is based around cmake and there is a project-provided migration tool to move from qmake to cmake.

However, it comes with a number of provisos and the output would need to be reviewed carefully for each target platform to ensure that Jamulus remains buildable on those platforms.

We also need to investigate the use of cmake for the legacy builds.

Describe possible approaches

  • Drop Qt
    One option is to take this as the point at which we decide that Qt is no longer the right cross-platform development environment for Jamulus.
    The obvious downside is there is a very large amount of work involved in porting to any other platform - primarily the UI but also the inter-component communication, networking and audio.
  • Halt updates to Qt, supply only Qt5 builds for Android and do not look to publish Jamulus on Play Store
    Clearly this saves a lot of work. However, it's likely to mean that support for Android is dropped in the medium term.

Given there is no simple solution, the least bad solution is probably to take the hit on Qt6:

  • Split into Qt5 (legacy) and Qt6 (modern) work streams
  • Migrate the Qt6 builds to cmake
  • Pin the legacy builds to "last known working versions" of all dependencies

Has this feature been discussed and generally agreed?

No. We need to come up with an agreed plan.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    • Status
      Triage

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions