├── .gitmodules ├── 6.3-linux.Dockerfile ├── 6.4-android.Dockerfile ├── 6.4-linux.Dockerfile ├── 6.5-android.Dockerfile ├── 6.5-linux.Dockerfile ├── 6.7-android.Dockerfile ├── 6.7-linux.Dockerfile ├── 6.8-android.Dockerfile ├── 6.8-linux.Dockerfile ├── LICENSE └── README.md /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a12e/docker-qt/03c1f2d56bc8d0c0a3a8061e8dadfbc6a669139f/.gitmodules -------------------------------------------------------------------------------- /6.3-linux.Dockerfile: -------------------------------------------------------------------------------- 1 | # Docker container to build Qt 6.3 for Linux 64-bit projects with latest cmake and linuxdeployqt 2 | # Image: a12e/docker-qt:6.3-linux 3 | 4 | FROM ubuntu:18.04 5 | MAINTAINER Aurélien Brooke 6 | 7 | ARG CMAKE_VERSION=3.24.2 8 | ARG QT_VERSION=6.3.2 9 | ARG QT_CONFIGURE_OPTIONS=" \ 10 | -openssl-linked \ 11 | -release \ 12 | -- \ 13 | -DFEATURE_accessibility=ON \ 14 | -DFEATURE_cups=ON \ 15 | -DFEATURE_dbus_linked=ON \ 16 | -DFEATURE_directfb=OFF \ 17 | -DFEATURE_doubleconversion=ON \ 18 | -DFEATURE_fontconfig=ON \ 19 | -DFEATURE_freetype=ON \ 20 | -DFEATURE_glib=ON \ 21 | -DFEATURE_gtk=ON \ 22 | -DFEATURE_icu=ON \ 23 | -DFEATURE_jpeg=ON \ 24 | -DFEATURE_libproxy=ON \ 25 | -DFEATURE_mimetype_database=OFF \ 26 | -DFEATURE_pcre2=ON \ 27 | -DFEATURE_png=ON \ 28 | -DFEATURE_rpath=OFF \ 29 | -DFEATURE_sql_mysql=ON \ 30 | -DFEATURE_sql_odbc=ON \ 31 | -DFEATURE_sql_psql=ON \ 32 | -DFEATURE_sql_sqlite=ON \ 33 | -DFEATURE_ssl=ON \ 34 | -DFEATURE_system_jpeg=ON \ 35 | -DFEATURE_system_pcre2=ON \ 36 | -DFEATURE_system_png=ON \ 37 | -DFEATURE_system_proxies=ON \ 38 | -DFEATURE_system_sqlite=ON \ 39 | -DFEATURE_system_zlib=ON \ 40 | " 41 | ARG QT_CONFIGURE_EXTRA_OPTIONS="" 42 | 43 | RUN DEBIAN_FRONTEND=noninteractive \ 44 | apt update \ 45 | && apt full-upgrade -y \ 46 | && apt install -y --no-install-recommends curl ca-certificates software-properties-common xz-utils \ 47 | && curl -Lo install-cmake.sh https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.sh \ 48 | && chmod +x install-cmake.sh \ 49 | && ./install-cmake.sh --skip-license --prefix=/usr/local \ 50 | && rm -fv install-cmake.sh \ 51 | && add-apt-repository ppa:ubuntu-toolchain-r/test \ 52 | && apt autoremove -y --purge software-properties-common \ 53 | && apt install -y --no-install-recommends \ 54 | g++-11 \ 55 | git openssh-client \ 56 | locales sudo \ 57 | fuse file \ 58 | && update-alternatives \ 59 | --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 \ 60 | --slave /usr/bin/g++ g++ /usr/bin/g++-11 \ 61 | --slave /usr/bin/gcov gcov /usr/bin/gcov-11 \ 62 | --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-11 \ 63 | --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-11 \ 64 | --slave /usr/bin/cpp cpp /usr/bin/cpp-11 \ 65 | && apt install -y --no-install-recommends \ 66 | libasound2-dev \ 67 | libatspi2.0-dev \ 68 | libb2-dev \ 69 | libcups2-dev \ 70 | libdbus-1-dev \ 71 | libdouble-conversion-dev \ 72 | libdrm-dev \ 73 | libfontconfig-dev \ 74 | libfreetype6-dev \ 75 | libgbm-dev \ 76 | libgl-dev \ 77 | libgl1-mesa-dev \ 78 | libgles2-mesa-dev \ 79 | libglib2.0-dev \ 80 | libglu1-mesa-dev \ 81 | libgstreamer-plugins-base1.0-dev \ 82 | libgstreamer1.0-dev \ 83 | libgtk-3-dev \ 84 | libharfbuzz-dev \ 85 | libicu-dev \ 86 | libinput-dev \ 87 | libjpeg-dev \ 88 | libkrb5-dev \ 89 | liblttng-ust-dev \ 90 | libmtdev-dev \ 91 | libmysqlclient-dev \ 92 | libpcre2-dev \ 93 | libpng-dev \ 94 | libpq-dev \ 95 | libproxy-dev \ 96 | libpulse-dev \ 97 | libsctp-dev \ 98 | libsdl2-dev \ 99 | libsqlite3-dev \ 100 | libssl-dev \ 101 | libsystemd-dev \ 102 | libts-dev \ 103 | libudev-dev \ 104 | libvulkan-dev \ 105 | libwayland-dev \ 106 | libwebp-dev \ 107 | libx11-dev \ 108 | libx11-xcb-dev \ 109 | libxcb-glx0-dev \ 110 | libxcb-icccm4-dev \ 111 | libxcb-image0-dev \ 112 | libxcb-keysyms1-dev \ 113 | libxcb-randr0-dev \ 114 | libxcb-render-util0-dev \ 115 | libxcb-render0-dev \ 116 | libxcb-shape0-dev \ 117 | libxcb-shm0-dev \ 118 | libxcb-sync-dev \ 119 | libxcb-util-dev \ 120 | libxcb-xfixes0-dev \ 121 | libxcb-xinerama0-dev \ 122 | libxcb-xinput-dev \ 123 | libxcb-xkb-dev \ 124 | libxcb1-dev \ 125 | libxext-dev \ 126 | libxfixes-dev \ 127 | libxi-dev \ 128 | libxkbcommon-dev \ 129 | libxkbcommon-x11-dev \ 130 | libxrender-dev \ 131 | libzstd-dev \ 132 | ninja-build \ 133 | pkg-config \ 134 | unixodbc-dev \ 135 | zlib1g-dev \ 136 | && curl -Lo - https://download.qt.io/archive/qt/$(echo "${QT_VERSION}" | cut -d. -f 1-2)/${QT_VERSION}/single/qt-everywhere-src-${QT_VERSION}.tar.xz | tar xJ \ 137 | && cd qt-everywhere-src-* \ 138 | && ./configure -prefix /usr/local ${QT_CONFIGURE_OPTIONS} ${QT_CONFIGURE_EXTRA_OPTIONS} \ 139 | && cmake --build . --parallel \ 140 | && cmake --install . \ 141 | && ldconfig -v \ 142 | && cd .. \ 143 | && rm -rf qt-everywhere-src-* \ 144 | && curl -Lo linuxdeployqt.AppImage "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" \ 145 | && chmod a+x linuxdeployqt.AppImage \ 146 | && ./linuxdeployqt.AppImage --appimage-extract \ 147 | && rm -f linuxdeployqt.AppImage \ 148 | && rm -f squashfs-root/usr/bin/qt.conf squashfs-root/usr/bin/linuxdeployqt \ 149 | && cp -v squashfs-root/usr/bin/* /usr/local/bin/ \ 150 | && cp -rv squashfs-root/usr/lib/appimagekit /usr/local/lib/ \ 151 | && rm -rf squashfs-root \ 152 | && git clone -b add_qt6_support https://github.com/RICCIARDI-Adrien/linuxdeployqt.git \ 153 | && cd linuxdeployqt \ 154 | && qmake linuxdeployqt.pro CONFIG+=release \ 155 | && make install \ 156 | && cd .. \ 157 | && rm -rf linuxdeployqt \ 158 | && apt-get -qq clean \ 159 | && locale-gen en_US.UTF-8 && dpkg-reconfigure locales \ 160 | && groupadd -r user && useradd --create-home --gid user user && echo 'user ALL=NOPASSWD: ALL' > /etc/sudoers.d/user 161 | 162 | USER user 163 | WORKDIR /home/user 164 | ENV HOME=/home/user 165 | -------------------------------------------------------------------------------- /6.4-android.Dockerfile: -------------------------------------------------------------------------------- 1 | # Docker container to build Qt 6.4 for Android projects with latest cmake 2 | # Image: a12e/docker-qt:6.4-android 3 | 4 | FROM ubuntu:22.04 5 | MAINTAINER Aurélien Brooke 6 | 7 | ARG ANDROID_NDK_VERSION=23.1.7779620 8 | ARG AQT_EXTRA_ARGS="--module qt3d qtshadertools qtmultimedia" 9 | ARG CMAKE_VERSION=3.24.2 10 | ARG EXTRA_PACKAGES="git openssh-client" 11 | ARG OPENSSL_VERSION=1.1.1t 12 | ARG QT_VERSION=6.4.3 13 | ARG SDKMANAGER_EXTRA_ARGS="" 14 | 15 | ENV ANDROID_SDK_ROOT=/opt/android-sdk \ 16 | ANDROID_NDK_ROOT=/opt/android-sdk/ndk/${ANDROID_NDK_VERSION} \ 17 | QT_ANDROID_PATH=/opt/qt/${QT_VERSION}/android_arm64_v8a \ 18 | QT_HOST_PATH=/opt/qt/${QT_VERSION}/gcc_64 \ 19 | QT_VERSION=${QT_VERSION} 20 | ENV ANDROID_NDK_HOME=${ANDROID_NDK_ROOT} \ 21 | PATH=/opt/android-sdk/cmdline-tools/latest/bin:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin:${QT_ANDROID_PATH}/bin:${PATH} 22 | 23 | RUN set -xe \ 24 | && DEBIAN_FRONTEND=noninteractive \ 25 | && BUILD_PACKAGES="python3-pip" \ 26 | && apt update \ 27 | && apt full-upgrade -y \ 28 | && apt install -y --no-install-recommends \ 29 | ${BUILD_PACKAGES} \ 30 | ${EXTRA_PACKAGES} \ 31 | curl \ 32 | ca-certificates \ 33 | default-jdk-headless \ 34 | make \ 35 | perl \ 36 | software-properties-common \ 37 | sudo \ 38 | unzip \ 39 | xz-utils \ 40 | && curl -Lo install-cmake.sh https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.sh \ 41 | && chmod +x install-cmake.sh \ 42 | && ./install-cmake.sh --skip-license --prefix=/usr/local \ 43 | && rm -fv install-cmake.sh \ 44 | && curl -Lo tools.zip https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip \ 45 | && unzip tools.zip && rm tools.zip \ 46 | && mkdir -p /opt/android-sdk/cmdline-tools/ \ 47 | && mv -v cmdline-tools /opt/android-sdk/cmdline-tools/latest \ 48 | && yes | sdkmanager --licenses \ 49 | && sdkmanager --update \ 50 | && sdkmanager "platforms;android-31" "platform-tools" "build-tools;31.0.0" "ndk;${ANDROID_NDK_VERSION}" ${SDKMANAGER_EXTRA_ARGS} \ 51 | && pip install aqtinstall \ 52 | && aqt install-qt linux desktop ${QT_VERSION} gcc_64 --outputdir /opt/qt \ 53 | && curl -Lo openssl.tar.gz https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \ 54 | && for QT_ARCH in arm64_v8a armv7 x86 x86_64 ; do \ 55 | aqt install-qt linux android ${QT_VERSION} android_${QT_ARCH} --outputdir /opt/qt ${AQT_EXTRA_ARGS} ; \ 56 | ln -vs /opt/qt/${QT_VERSION}/gcc_64/libexec/qmlimportscanner /opt/qt/${QT_VERSION}/android_${QT_ARCH}/libexec/qmlimportscanner ; \ 57 | case $QT_ARCH in \ 58 | "arm64_v8a" ) OPENSSL_ARCH=arm64 ;; \ 59 | "armv7" ) OPENSSL_ARCH=arm ;; \ 60 | "x86" ) OPENSSL_ARCH=x86 ;; \ 61 | "x86_64" ) OPENSSL_ARCH=x86_64 ;; \ 62 | esac ; \ 63 | tar xzf openssl.tar.gz ; \ 64 | cd openssl-${OPENSSL_VERSION}/ ; \ 65 | ./Configure android-${OPENSSL_ARCH} shared zlib-dynamic -no-engine no-tests --prefix=/opt/qt/${QT_VERSION}/android_${QT_ARCH} -D__ANDROID_API__=23 ; \ 66 | make SHLIB_VERSION_NUMBER= SHLIB_EXT=_1_1.so build_libs ; \ 67 | make SHLIB_VERSION_NUMBER= SHLIB_EXT=_1_1.so install_sw ; \ 68 | cd ../ ; \ 69 | rm -rf openssl-${OPENSSL_VERSION} ; \ 70 | done \ 71 | && rm -fv openssl.tar.gz \ 72 | && pip uninstall -y aqtinstall \ 73 | && pip cache purge \ 74 | && apt autoremove --purge -y ${BUILD_PACKAGES} \ 75 | && rm -rf /var/lib/apt/lists/* \ 76 | && groupadd -r user && useradd --create-home --gid user user && echo 'user ALL=NOPASSWD: ALL' > /etc/sudoers.d/user 77 | 78 | USER user 79 | WORKDIR /home/user 80 | ENV HOME=/home/user 81 | -------------------------------------------------------------------------------- /6.4-linux.Dockerfile: -------------------------------------------------------------------------------- 1 | # Docker container to build Qt 6.4 for Linux 64-bit projects with latest cmake and linuxdeployqt 2 | # Image: a12e/docker-qt:6.4-linux 3 | 4 | FROM ubuntu:18.04 5 | MAINTAINER Aurélien Brooke 6 | 7 | ARG CMAKE_VERSION=3.24.2 8 | ARG QT_VERSION=6.4.3 9 | ARG QT_CONFIGURE_OPTIONS=" \ 10 | -openssl-linked \ 11 | -release \ 12 | -- \ 13 | -DFEATURE_accessibility=ON \ 14 | -DFEATURE_cups=ON \ 15 | -DFEATURE_dbus_linked=ON \ 16 | -DFEATURE_directfb=OFF \ 17 | -DFEATURE_doubleconversion=ON \ 18 | -DFEATURE_fontconfig=ON \ 19 | -DFEATURE_freetype=ON \ 20 | -DFEATURE_glib=ON \ 21 | -DFEATURE_gtk=ON \ 22 | -DFEATURE_icu=ON \ 23 | -DFEATURE_jpeg=ON \ 24 | -DFEATURE_libproxy=ON \ 25 | -DFEATURE_mimetype_database=OFF \ 26 | -DFEATURE_pcre2=ON \ 27 | -DFEATURE_png=ON \ 28 | -DFEATURE_rpath=OFF \ 29 | -DFEATURE_sql_mysql=ON \ 30 | -DFEATURE_sql_odbc=ON \ 31 | -DFEATURE_sql_psql=ON \ 32 | -DFEATURE_sql_sqlite=ON \ 33 | -DFEATURE_ssl=ON \ 34 | -DFEATURE_system_jpeg=ON \ 35 | -DFEATURE_system_pcre2=ON \ 36 | -DFEATURE_system_png=ON \ 37 | -DFEATURE_system_proxies=ON \ 38 | -DFEATURE_system_sqlite=ON \ 39 | -DFEATURE_system_zlib=ON \ 40 | " 41 | ARG QT_CONFIGURE_EXTRA_OPTIONS="" 42 | 43 | RUN set -xe \ 44 | && DEBIAN_FRONTEND=noninteractive \ 45 | && apt update \ 46 | && apt full-upgrade -y \ 47 | && apt install -y --no-install-recommends curl ca-certificates software-properties-common xz-utils \ 48 | && curl -Lo install-cmake.sh https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.sh \ 49 | && chmod +x install-cmake.sh \ 50 | && ./install-cmake.sh --skip-license --prefix=/usr/local \ 51 | && rm -fv install-cmake.sh \ 52 | && add-apt-repository ppa:ubuntu-toolchain-r/test \ 53 | && apt autoremove -y --purge software-properties-common \ 54 | && apt install -y --no-install-recommends \ 55 | g++-11 \ 56 | git openssh-client \ 57 | locales sudo \ 58 | fuse file \ 59 | && update-alternatives \ 60 | --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 \ 61 | --slave /usr/bin/g++ g++ /usr/bin/g++-11 \ 62 | --slave /usr/bin/gcov gcov /usr/bin/gcov-11 \ 63 | --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-11 \ 64 | --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-11 \ 65 | --slave /usr/bin/cpp cpp /usr/bin/cpp-11 \ 66 | && apt install -y --no-install-recommends \ 67 | libasound2-dev \ 68 | libatspi2.0-dev \ 69 | libb2-dev \ 70 | libcups2-dev \ 71 | libdbus-1-dev \ 72 | libdouble-conversion-dev \ 73 | libdrm-dev \ 74 | libfontconfig-dev \ 75 | libfreetype6-dev \ 76 | libgbm-dev \ 77 | libgl-dev \ 78 | libgl1-mesa-dev \ 79 | libgles2-mesa-dev \ 80 | libglib2.0-dev \ 81 | libglu1-mesa-dev \ 82 | libgstreamer-plugins-base1.0-dev \ 83 | libgstreamer1.0-dev \ 84 | libgtk-3-dev \ 85 | libharfbuzz-dev \ 86 | libicu-dev \ 87 | libinput-dev \ 88 | libjpeg-dev \ 89 | libkrb5-dev \ 90 | liblttng-ust-dev \ 91 | libmtdev-dev \ 92 | libmysqlclient-dev \ 93 | libpcre2-dev \ 94 | libpng-dev \ 95 | libpq-dev \ 96 | libproxy-dev \ 97 | libpulse-dev \ 98 | libsctp-dev \ 99 | libsdl2-dev \ 100 | libsqlite3-dev \ 101 | libssl-dev \ 102 | libsystemd-dev \ 103 | libts-dev \ 104 | libudev-dev \ 105 | libvulkan-dev \ 106 | libwayland-dev \ 107 | libwebp-dev \ 108 | libx11-dev \ 109 | libx11-xcb-dev \ 110 | libxcb-glx0-dev \ 111 | libxcb-icccm4-dev \ 112 | libxcb-image0-dev \ 113 | libxcb-keysyms1-dev \ 114 | libxcb-randr0-dev \ 115 | libxcb-render-util0-dev \ 116 | libxcb-render0-dev \ 117 | libxcb-shape0-dev \ 118 | libxcb-shm0-dev \ 119 | libxcb-sync-dev \ 120 | libxcb-util-dev \ 121 | libxcb-xfixes0-dev \ 122 | libxcb-xinerama0-dev \ 123 | libxcb-xinput-dev \ 124 | libxcb-xkb-dev \ 125 | libxcb1-dev \ 126 | libxext-dev \ 127 | libxfixes-dev \ 128 | libxi-dev \ 129 | libxkbcommon-dev \ 130 | libxkbcommon-x11-dev \ 131 | libxrender-dev \ 132 | libzstd-dev \ 133 | ninja-build \ 134 | pkg-config \ 135 | unixodbc-dev \ 136 | zlib1g-dev \ 137 | && curl -Lo - https://download.qt.io/archive/qt/$(echo "${QT_VERSION}" | cut -d. -f 1-2)/${QT_VERSION}/single/qt-everywhere-src-${QT_VERSION}.tar.xz | tar xJ \ 138 | && cd qt-everywhere-src-* \ 139 | && ./configure -prefix /usr/local ${QT_CONFIGURE_OPTIONS} ${QT_CONFIGURE_EXTRA_OPTIONS} \ 140 | && cmake --build . --parallel \ 141 | && cmake --install . \ 142 | && ldconfig -v \ 143 | && cd .. \ 144 | && rm -rf qt-everywhere-src-* \ 145 | && curl -Lo linuxdeployqt.AppImage "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" \ 146 | && chmod a+x linuxdeployqt.AppImage \ 147 | && ./linuxdeployqt.AppImage --appimage-extract \ 148 | && rm -f linuxdeployqt.AppImage \ 149 | && rm -f squashfs-root/usr/bin/qt.conf squashfs-root/usr/bin/linuxdeployqt \ 150 | && cp -v squashfs-root/usr/bin/* /usr/local/bin/ \ 151 | && cp -rv squashfs-root/usr/lib/appimagekit /usr/local/lib/ \ 152 | && rm -rf squashfs-root \ 153 | && git clone -b add_qt6_support https://github.com/RICCIARDI-Adrien/linuxdeployqt.git \ 154 | && cd linuxdeployqt \ 155 | && qmake linuxdeployqt.pro CONFIG+=release \ 156 | && make install \ 157 | && cd .. \ 158 | && rm -rf linuxdeployqt \ 159 | && apt-get -qq clean \ 160 | && locale-gen en_US.UTF-8 && dpkg-reconfigure locales \ 161 | && groupadd -r user && useradd --create-home --gid user user && echo 'user ALL=NOPASSWD: ALL' > /etc/sudoers.d/user 162 | 163 | USER user 164 | WORKDIR /home/user 165 | ENV HOME=/home/user 166 | -------------------------------------------------------------------------------- /6.5-android.Dockerfile: -------------------------------------------------------------------------------- 1 | # Docker container to build Qt 6.5 for Android projects with latest cmake 2 | # Image: a12e/docker-qt:6.5-android 3 | 4 | FROM ubuntu:22.04 5 | MAINTAINER Aurélien Brooke 6 | 7 | ARG ANDROID_NDK_VERSION=25.1.8937393 8 | ARG AQT_EXTRA_ARGS="--module qt3d qtshadertools qtmultimedia" 9 | ARG CMAKE_VERSION=3.27.7 10 | ARG EXTRA_PACKAGES="git openssh-client" 11 | ARG OPENSSL_VERSION=3.0.11 12 | ARG QT_VERSION=6.5.3 13 | ARG SDKMANAGER_EXTRA_ARGS="" 14 | 15 | ENV ANDROID_SDK_ROOT=/opt/android-sdk \ 16 | ANDROID_NDK_ROOT=/opt/android-sdk/ndk/${ANDROID_NDK_VERSION} \ 17 | QT_ANDROID_PATH=/opt/qt/${QT_VERSION}/android_arm64_v8a \ 18 | QT_HOST_PATH=/opt/qt/${QT_VERSION}/gcc_64 \ 19 | QT_VERSION=${QT_VERSION} 20 | ENV ANDROID_NDK_HOME=${ANDROID_NDK_ROOT} \ 21 | PATH=/opt/android-sdk/cmdline-tools/latest/bin:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin:${QT_ANDROID_PATH}/bin:${PATH} 22 | 23 | RUN set -xe \ 24 | && export DEBIAN_FRONTEND=noninteractive \ 25 | && BUILD_PACKAGES="python3-pip" \ 26 | && apt update \ 27 | && apt full-upgrade -y \ 28 | && apt install -y --no-install-recommends \ 29 | ${BUILD_PACKAGES} \ 30 | ${EXTRA_PACKAGES} \ 31 | curl \ 32 | ca-certificates \ 33 | default-jdk-headless \ 34 | make \ 35 | perl \ 36 | software-properties-common \ 37 | sudo \ 38 | unzip \ 39 | xz-utils \ 40 | && curl -Lo install-cmake.sh https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.sh \ 41 | && chmod +x install-cmake.sh \ 42 | && ./install-cmake.sh --skip-license --prefix=/usr/local \ 43 | && rm -fv install-cmake.sh \ 44 | && curl -Lo tools.zip https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip \ 45 | && unzip tools.zip && rm tools.zip \ 46 | && mkdir -p /opt/android-sdk/cmdline-tools/ \ 47 | && mv -v cmdline-tools /opt/android-sdk/cmdline-tools/latest \ 48 | && yes | sdkmanager --licenses \ 49 | && sdkmanager --update \ 50 | && sdkmanager "platforms;android-33" "platform-tools" "build-tools;33.0.2" "ndk;${ANDROID_NDK_VERSION}" ${SDKMANAGER_EXTRA_ARGS} \ 51 | && pip install aqtinstall \ 52 | && aqt install-qt linux desktop ${QT_VERSION} gcc_64 --outputdir /opt/qt \ 53 | && curl -Lo openssl.tar.gz https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \ 54 | && for QT_ARCH in arm64_v8a armv7 x86 x86_64 ; do \ 55 | aqt install-qt linux android ${QT_VERSION} android_${QT_ARCH} --outputdir /opt/qt ${AQT_EXTRA_ARGS} ; \ 56 | case $QT_ARCH in \ 57 | "arm64_v8a" ) OPENSSL_ARCH=arm64 ;; \ 58 | "armv7" ) OPENSSL_ARCH=arm ;; \ 59 | "x86" ) OPENSSL_ARCH=x86 ;; \ 60 | "x86_64" ) OPENSSL_ARCH=x86_64 ;; \ 61 | esac ; \ 62 | tar xzf openssl.tar.gz ; \ 63 | cd openssl-${OPENSSL_VERSION}/ ; \ 64 | sed -i 's/sub shlibvariant { $target{shlib_variant} || "" }/sub shlibvariant { "_3" }/g' ./Configurations/platform/Unix.pm ; \ 65 | ./Configure android-${OPENSSL_ARCH} shared zlib-dynamic -no-engine no-tests --prefix=/opt/qt/${QT_VERSION}/android_${QT_ARCH} -D__ANDROID_API__=23 ; \ 66 | make build_libs ; \ 67 | make install_sw ; \ 68 | cd ../ ; \ 69 | rm -rf openssl-${OPENSSL_VERSION} ; \ 70 | done \ 71 | && rm -fv openssl.tar.gz \ 72 | && pip uninstall -y aqtinstall \ 73 | && pip cache purge \ 74 | && apt autoremove --purge -y ${BUILD_PACKAGES} \ 75 | && rm -rf /var/lib/apt/lists/* \ 76 | && groupadd -r user && useradd --create-home --gid user user && echo 'user ALL=NOPASSWD: ALL' > /etc/sudoers.d/user 77 | 78 | USER user 79 | WORKDIR /home/user 80 | ENV HOME=/home/user 81 | -------------------------------------------------------------------------------- /6.5-linux.Dockerfile: -------------------------------------------------------------------------------- 1 | # Docker container to build Qt 6.5 for Linux 64-bit projects with latest cmake and linuxdeployqt 2 | # Image: a12e/docker-qt:6.5-linux 3 | 4 | FROM ubuntu:20.04 5 | MAINTAINER Aurélien Brooke 6 | 7 | ARG CMAKE_VERSION=3.27.7 8 | ARG QT_VERSION=6.5.3 9 | ARG QT_CONFIGURE_OPTIONS=" \ 10 | -openssl-linked \ 11 | -release \ 12 | -- \ 13 | -DFEATURE_accessibility=ON \ 14 | -DFEATURE_cups=ON \ 15 | -DFEATURE_dbus_linked=ON \ 16 | -DFEATURE_directfb=OFF \ 17 | -DFEATURE_doubleconversion=ON \ 18 | -DFEATURE_fontconfig=ON \ 19 | -DFEATURE_freetype=ON \ 20 | -DFEATURE_glib=ON \ 21 | -DFEATURE_gtk=ON \ 22 | -DFEATURE_icu=ON \ 23 | -DFEATURE_jpeg=ON \ 24 | -DFEATURE_libproxy=ON \ 25 | -DFEATURE_mimetype_database=OFF \ 26 | -DFEATURE_pcre2=ON \ 27 | -DFEATURE_png=ON \ 28 | -DFEATURE_rpath=OFF \ 29 | -DFEATURE_sql_mysql=ON \ 30 | -DFEATURE_sql_odbc=ON \ 31 | -DFEATURE_sql_psql=ON \ 32 | -DFEATURE_sql_sqlite=ON \ 33 | -DFEATURE_ssl=ON \ 34 | -DFEATURE_system_jpeg=ON \ 35 | -DFEATURE_system_pcre2=ON \ 36 | -DFEATURE_system_png=ON \ 37 | -DFEATURE_system_proxies=ON \ 38 | -DFEATURE_system_sqlite=ON \ 39 | -DFEATURE_system_zlib=ON \ 40 | " 41 | ARG QT_CONFIGURE_EXTRA_OPTIONS="" 42 | 43 | RUN set -xe \ 44 | && export DEBIAN_FRONTEND=noninteractive \ 45 | && apt update \ 46 | && apt full-upgrade -y \ 47 | && apt install -y --no-install-recommends curl ca-certificates software-properties-common xz-utils \ 48 | && curl -Lo install-cmake.sh https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.sh \ 49 | && chmod +x install-cmake.sh \ 50 | && ./install-cmake.sh --skip-license --prefix=/usr/local \ 51 | && rm -fv install-cmake.sh \ 52 | && add-apt-repository ppa:ubuntu-toolchain-r/test \ 53 | && apt autoremove -y --purge software-properties-common \ 54 | && apt install -y --no-install-recommends \ 55 | g++-11 \ 56 | git openssh-client \ 57 | locales sudo \ 58 | fuse file \ 59 | && update-alternatives \ 60 | --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 \ 61 | --slave /usr/bin/g++ g++ /usr/bin/g++-11 \ 62 | --slave /usr/bin/gcov gcov /usr/bin/gcov-11 \ 63 | --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-11 \ 64 | --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-11 \ 65 | --slave /usr/bin/cpp cpp /usr/bin/cpp-11 \ 66 | && apt install -y --no-install-recommends \ 67 | libasound2-dev \ 68 | libatspi2.0-dev \ 69 | libb2-dev \ 70 | libcups2-dev \ 71 | libdbus-1-dev \ 72 | libdouble-conversion-dev \ 73 | libdrm-dev \ 74 | libfontconfig-dev \ 75 | libfreetype6-dev \ 76 | libgbm-dev \ 77 | libgl-dev \ 78 | libgl1-mesa-dev \ 79 | libgles2-mesa-dev \ 80 | libglib2.0-dev \ 81 | libglu1-mesa-dev \ 82 | libgstreamer-plugins-base1.0-dev \ 83 | libgstreamer1.0-dev \ 84 | libgtk-3-dev \ 85 | libharfbuzz-dev \ 86 | libicu-dev \ 87 | libinput-dev \ 88 | libjpeg-dev \ 89 | libkrb5-dev \ 90 | liblttng-ust-dev \ 91 | libmtdev-dev \ 92 | libmysqlclient-dev \ 93 | libpcre2-dev \ 94 | libpng-dev \ 95 | libpq-dev \ 96 | libproxy-dev \ 97 | libpulse-dev \ 98 | libsctp-dev \ 99 | libsdl2-dev \ 100 | libsqlite3-dev \ 101 | libssl-dev \ 102 | libsystemd-dev \ 103 | libts-dev \ 104 | libudev-dev \ 105 | libvulkan-dev \ 106 | libwayland-dev \ 107 | libwebp-dev \ 108 | libx11-dev \ 109 | libx11-xcb-dev \ 110 | libxcb-cursor-dev \ 111 | libxcb-glx0-dev \ 112 | libxcb-icccm4-dev \ 113 | libxcb-image0-dev \ 114 | libxcb-keysyms1-dev \ 115 | libxcb-randr0-dev \ 116 | libxcb-render-util0-dev \ 117 | libxcb-render0-dev \ 118 | libxcb-shape0-dev \ 119 | libxcb-shm0-dev \ 120 | libxcb-sync-dev \ 121 | libxcb-util-dev \ 122 | libxcb-xfixes0-dev \ 123 | libxcb-xinerama0-dev \ 124 | libxcb-xinput-dev \ 125 | libxcb-xkb-dev \ 126 | libxcb1-dev \ 127 | libxext-dev \ 128 | libxfixes-dev \ 129 | libxi-dev \ 130 | libxkbcommon-dev \ 131 | libxkbcommon-x11-dev \ 132 | libxrender-dev \ 133 | libzstd-dev \ 134 | ninja-build \ 135 | pkg-config \ 136 | unixodbc-dev \ 137 | zlib1g-dev \ 138 | && curl --http1.1 --location --output - https://download.qt.io/archive/qt/$(echo "${QT_VERSION}" | cut -d. -f 1-2)/${QT_VERSION}/single/qt-everywhere-src-${QT_VERSION}.tar.xz | tar xJ \ 139 | && cd qt-everywhere-src-* \ 140 | && ./configure -prefix /usr/local ${QT_CONFIGURE_OPTIONS} ${QT_CONFIGURE_EXTRA_OPTIONS} \ 141 | && cmake --build . --parallel \ 142 | && cmake --install . \ 143 | && ldconfig -v \ 144 | && cd .. \ 145 | && rm -rf qt-everywhere-src-* \ 146 | && curl -Lo linuxdeployqt.AppImage "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" \ 147 | && chmod a+x linuxdeployqt.AppImage \ 148 | && mv -v linuxdeployqt.AppImage /usr/local/bin/linuxdeployqt \ 149 | && apt-get -qq clean \ 150 | && locale-gen en_US.UTF-8 && dpkg-reconfigure locales \ 151 | && groupadd -r user && useradd --create-home --gid user user && echo 'user ALL=NOPASSWD: ALL' > /etc/sudoers.d/user 152 | 153 | USER user 154 | WORKDIR /home/user 155 | ENV HOME=/home/user 156 | -------------------------------------------------------------------------------- /6.7-android.Dockerfile: -------------------------------------------------------------------------------- 1 | # Docker container to build Qt 6.7 for Android projects with latest cmake 2 | # Image: a12e/docker-qt:6.7-android 3 | 4 | FROM ubuntu:24.04 5 | MAINTAINER Aurélien Brooke 6 | 7 | ARG ANDROID_PLATFORM_VERSION=34 8 | ARG ANDROID_NDK_VERSION=26.1.10909125 9 | ARG AQT_EXTRA_ARGS="--module qtshadertools qtmultimedia qtwebsockets" 10 | ARG BUILD_TOOLS_VERSION=34.0.0 11 | ARG CMAKE_VERSION=3.30.4 12 | ARG EXTRA_PACKAGES="git openssh-client" 13 | ARG OPENSSL_VERSION=3.0.14 14 | ARG QT_ARCHS="arm64_v8a armv7" # in arm64_v8a armv7 x86 x86_64 15 | ARG QT_VERSION=6.7.3 16 | ARG SDKMANAGER_EXTRA_ARGS="" 17 | 18 | ENV ANDROID_SDK_ROOT=/opt/android-sdk \ 19 | ANDROID_NDK_ROOT=/opt/android-sdk/ndk/${ANDROID_NDK_VERSION} \ 20 | QT_ANDROID_PATH=/opt/qt/${QT_VERSION}/android_arm64_v8a \ 21 | QT_HOST_PATH=/opt/qt/${QT_VERSION}/gcc_64 \ 22 | QT_VERSION=${QT_VERSION} 23 | ENV ANDROID_NDK_HOME=${ANDROID_NDK_ROOT} \ 24 | PATH=/opt/android-sdk/cmdline-tools/latest/bin:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin:${QT_ANDROID_PATH}/bin:${PATH} 25 | 26 | RUN set -xe \ 27 | && export DEBIAN_FRONTEND=noninteractive \ 28 | && BUILD_PACKAGES="python3-pip" \ 29 | && apt update \ 30 | && apt full-upgrade -y \ 31 | && apt install -y --no-install-recommends \ 32 | ${BUILD_PACKAGES} \ 33 | ${EXTRA_PACKAGES} \ 34 | curl \ 35 | ca-certificates \ 36 | default-jdk-headless \ 37 | libxkbcommon0 \ 38 | libgl1 libegl1 \ 39 | libfontconfig1 \ 40 | libx11-6 \ 41 | libfreetype6 \ 42 | make \ 43 | perl \ 44 | software-properties-common \ 45 | sudo \ 46 | unzip \ 47 | xz-utils \ 48 | && curl -Lo install-cmake.sh https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.sh \ 49 | && chmod +x install-cmake.sh \ 50 | && ./install-cmake.sh --skip-license --prefix=/usr/local \ 51 | && rm -fv install-cmake.sh \ 52 | && curl -Lo tools.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip \ 53 | && unzip tools.zip && rm tools.zip \ 54 | && mkdir -p /opt/android-sdk/cmdline-tools/ \ 55 | && mv -v cmdline-tools /opt/android-sdk/cmdline-tools/latest \ 56 | && yes | sdkmanager --licenses \ 57 | && sdkmanager --update \ 58 | && sdkmanager "platforms;android-${ANDROID_PLATFORM_VERSION}" "platform-tools" "build-tools;${BUILD_TOOLS_VERSION}" "ndk;${ANDROID_NDK_VERSION}" ${SDKMANAGER_EXTRA_ARGS} \ 59 | && pip install --break-system-packages aqtinstall \ 60 | && aqt install-qt linux desktop ${QT_VERSION} linux_gcc_64 --outputdir /opt/qt --module qtshadertools \ 61 | && curl -Lo openssl.tar.gz https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \ 62 | && for QT_ARCH in ${QT_ARCHS} ; do \ 63 | aqt install-qt linux android ${QT_VERSION} android_${QT_ARCH} --outputdir /opt/qt ${AQT_EXTRA_ARGS} ; \ 64 | case $QT_ARCH in \ 65 | "arm64_v8a" ) OPENSSL_ARCH=arm64 ;; \ 66 | "armv7" ) OPENSSL_ARCH=arm ;; \ 67 | "x86" ) OPENSSL_ARCH=x86 ;; \ 68 | "x86_64" ) OPENSSL_ARCH=x86_64 ;; \ 69 | esac ; \ 70 | tar xzf openssl.tar.gz ; \ 71 | cd openssl-${OPENSSL_VERSION}/ ; \ 72 | sed -i 's/sub shlibvariant { $target{shlib_variant} || "" }/sub shlibvariant { "_3" }/g' ./Configurations/platform/Unix.pm ; \ 73 | ./Configure android-${OPENSSL_ARCH} shared zlib-dynamic -no-engine no-tests --prefix=/opt/qt/${QT_VERSION}/android_${QT_ARCH} -D__ANDROID_API__=26 ; \ 74 | make build_libs ; \ 75 | make install_sw ; \ 76 | cd ../ ; \ 77 | rm -rf openssl-${OPENSSL_VERSION} ; \ 78 | done \ 79 | && rm -fv openssl.tar.gz \ 80 | && pip cache purge \ 81 | && apt autoremove --purge -y ${BUILD_PACKAGES} \ 82 | && rm -rf /var/lib/apt/lists/* \ 83 | && groupadd -r user && useradd --create-home --gid user user && echo 'user ALL=NOPASSWD: ALL' > /etc/sudoers.d/user 84 | 85 | USER user 86 | WORKDIR /home/user 87 | ENV HOME=/home/user 88 | -------------------------------------------------------------------------------- /6.7-linux.Dockerfile: -------------------------------------------------------------------------------- 1 | # Docker container to build Qt 6.7 for Linux 64-bit projects with latest cmake and linuxdeployqt 2 | # Image: a12e/docker-qt:6.7-linux 3 | 4 | FROM ubuntu:20.04 5 | MAINTAINER Aurélien Brooke 6 | 7 | ARG CMAKE_VERSION=3.30.4 8 | ARG QT_VERSION=6.7.3 9 | ARG QT_CONFIGURE_OPTIONS=" \ 10 | -openssl-linked \ 11 | -skip qtopcua \ 12 | -release \ 13 | -- \ 14 | -DFEATURE_accessibility=ON \ 15 | -DFEATURE_cups=ON \ 16 | -DFEATURE_dbus_linked=ON \ 17 | -DFEATURE_directfb=OFF \ 18 | -DFEATURE_doubleconversion=ON \ 19 | -DFEATURE_fontconfig=ON \ 20 | -DFEATURE_freetype=ON \ 21 | -DFEATURE_glib=ON \ 22 | -DFEATURE_gtk=ON \ 23 | -DFEATURE_icu=ON \ 24 | -DFEATURE_jpeg=ON \ 25 | -DFEATURE_libproxy=ON \ 26 | -DFEATURE_mimetype_database=OFF \ 27 | -DFEATURE_pcre2=ON \ 28 | -DFEATURE_png=ON \ 29 | -DFEATURE_rpath=OFF \ 30 | -DFEATURE_sql_mysql=ON \ 31 | -DFEATURE_sql_odbc=ON \ 32 | -DFEATURE_sql_psql=ON \ 33 | -DFEATURE_sql_sqlite=ON \ 34 | -DFEATURE_ssl=ON \ 35 | -DFEATURE_system_jpeg=ON \ 36 | -DFEATURE_system_pcre2=ON \ 37 | -DFEATURE_system_png=ON \ 38 | -DFEATURE_system_proxies=ON \ 39 | -DFEATURE_system_sqlite=ON \ 40 | -DFEATURE_system_zlib=ON \ 41 | " 42 | ARG QT_CONFIGURE_EXTRA_OPTIONS="" 43 | 44 | RUN set -xe \ 45 | && export DEBIAN_FRONTEND=noninteractive \ 46 | && apt update \ 47 | && apt full-upgrade -y \ 48 | && apt install -y --no-install-recommends curl ca-certificates software-properties-common xz-utils \ 49 | && curl -Lo install-cmake.sh https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.sh \ 50 | && chmod +x install-cmake.sh \ 51 | && ./install-cmake.sh --skip-license --prefix=/usr/local \ 52 | && rm -fv install-cmake.sh \ 53 | && add-apt-repository ppa:ubuntu-toolchain-r/test \ 54 | && apt autoremove -y --purge software-properties-common \ 55 | && apt install -y --no-install-recommends \ 56 | g++-13 \ 57 | git openssh-client \ 58 | locales sudo \ 59 | fuse file \ 60 | && update-alternatives \ 61 | --install /usr/bin/gcc gcc /usr/bin/gcc-13 130 \ 62 | --slave /usr/bin/g++ g++ /usr/bin/g++-13 \ 63 | --slave /usr/bin/gcov gcov /usr/bin/gcov-13 \ 64 | --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-13 \ 65 | --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-13 \ 66 | --slave /usr/bin/cpp cpp /usr/bin/cpp-13 \ 67 | && apt install -y --no-install-recommends \ 68 | libasound2-dev \ 69 | libatspi2.0-dev \ 70 | libb2-dev \ 71 | libcups2-dev \ 72 | libdbus-1-dev \ 73 | libdouble-conversion-dev \ 74 | libdrm-dev \ 75 | libfontconfig-dev \ 76 | libfreetype6-dev \ 77 | libgbm-dev \ 78 | libgl-dev \ 79 | libgl1-mesa-dev \ 80 | libgles2-mesa-dev \ 81 | libglib2.0-dev \ 82 | libglu1-mesa-dev \ 83 | libgstreamer-plugins-base1.0-dev \ 84 | libgstreamer1.0-dev \ 85 | libgtk-3-dev \ 86 | libharfbuzz-dev \ 87 | libicu-dev \ 88 | libinput-dev \ 89 | libjpeg-dev \ 90 | libkrb5-dev \ 91 | liblttng-ust-dev \ 92 | libmtdev-dev \ 93 | libmysqlclient-dev \ 94 | libpcre2-dev \ 95 | libpng-dev \ 96 | libpq-dev \ 97 | libproxy-dev \ 98 | libpulse-dev \ 99 | libsctp-dev \ 100 | libsdl2-dev \ 101 | libsqlite3-dev \ 102 | libssl-dev \ 103 | libsystemd-dev \ 104 | libts-dev \ 105 | libudev-dev \ 106 | libvulkan-dev \ 107 | libwayland-dev \ 108 | libwebp-dev \ 109 | libx11-dev \ 110 | libx11-xcb-dev \ 111 | libxcb-cursor-dev \ 112 | libxcb-glx0-dev \ 113 | libxcb-icccm4-dev \ 114 | libxcb-image0-dev \ 115 | libxcb-keysyms1-dev \ 116 | libxcb-randr0-dev \ 117 | libxcb-render-util0-dev \ 118 | libxcb-render0-dev \ 119 | libxcb-shape0-dev \ 120 | libxcb-shm0-dev \ 121 | libxcb-sync-dev \ 122 | libxcb-util-dev \ 123 | libxcb-xfixes0-dev \ 124 | libxcb-xinerama0-dev \ 125 | libxcb-xinput-dev \ 126 | libxcb-xkb-dev \ 127 | libxcb1-dev \ 128 | libxext-dev \ 129 | libxfixes-dev \ 130 | libxi-dev \ 131 | libxkbcommon-dev \ 132 | libxkbcommon-x11-dev \ 133 | libxrender-dev \ 134 | libzstd-dev \ 135 | ninja-build \ 136 | pkg-config \ 137 | unixodbc-dev \ 138 | zlib1g-dev \ 139 | && curl --http1.1 --location --output - https://download.qt.io/archive/qt/$(echo "${QT_VERSION}" | cut -d. -f 1-2)/${QT_VERSION}/single/qt-everywhere-src-${QT_VERSION}.tar.xz | tar xJ \ 140 | && cd qt-everywhere-src-* \ 141 | && ./configure -prefix /usr/local ${QT_CONFIGURE_OPTIONS} ${QT_CONFIGURE_EXTRA_OPTIONS} \ 142 | && cmake --build . --parallel \ 143 | && cmake --install . \ 144 | && ldconfig -v \ 145 | && cd .. \ 146 | && rm -rf qt-everywhere-src-* \ 147 | && curl -Lo linuxdeployqt.AppImage "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" \ 148 | && chmod a+x linuxdeployqt.AppImage \ 149 | && mv -v linuxdeployqt.AppImage /usr/local/bin/linuxdeployqt \ 150 | && apt-get -qq clean \ 151 | && locale-gen en_US.UTF-8 && dpkg-reconfigure locales \ 152 | && groupadd -r user && useradd --create-home --gid user user && echo 'user ALL=NOPASSWD: ALL' > /etc/sudoers.d/user 153 | 154 | USER user 155 | WORKDIR /home/user 156 | ENV HOME=/home/user 157 | -------------------------------------------------------------------------------- /6.8-android.Dockerfile: -------------------------------------------------------------------------------- 1 | # Docker container to build Qt 6.8 for Android projects with latest cmake 2 | # Image: a12e/docker-qt:6.8-android 3 | 4 | FROM ubuntu:24.04 5 | MAINTAINER Aurélien Brooke 6 | 7 | ARG ANDROID_PLATFORM_VERSION=34 8 | ARG ANDROID_NDK_VERSION=26.1.10909125 9 | ARG AQT_EXTRA_ARGS="--module qtshadertools qtmultimedia qtwebsockets" 10 | ARG BUILD_TOOLS_VERSION=34.0.0 11 | ARG CMAKE_VERSION=3.30.4 12 | ARG EXTRA_PACKAGES="git openssh-client" 13 | ARG OPENSSL_VERSION=3.0.14 14 | ARG QT_ARCHS="arm64_v8a armv7" # in arm64_v8a armv7 x86 x86_64 15 | ARG QT_VERSION=6.8.0 16 | ARG SDKMANAGER_EXTRA_ARGS="" 17 | 18 | ENV ANDROID_SDK_ROOT=/opt/android-sdk \ 19 | ANDROID_NDK_ROOT=/opt/android-sdk/ndk/${ANDROID_NDK_VERSION} \ 20 | QT_ANDROID_PATH=/opt/qt/${QT_VERSION}/android_arm64_v8a \ 21 | QT_HOST_PATH=/opt/qt/${QT_VERSION}/gcc_64 \ 22 | QT_VERSION=${QT_VERSION} 23 | ENV ANDROID_NDK_HOME=${ANDROID_NDK_ROOT} \ 24 | PATH=/opt/android-sdk/cmdline-tools/latest/bin:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin:${QT_ANDROID_PATH}/bin:${PATH} 25 | 26 | RUN set -xe \ 27 | && export DEBIAN_FRONTEND=noninteractive \ 28 | && BUILD_PACKAGES="python3-pip" \ 29 | && apt update \ 30 | && apt full-upgrade -y \ 31 | && apt install -y --no-install-recommends \ 32 | ${BUILD_PACKAGES} \ 33 | ${EXTRA_PACKAGES} \ 34 | curl \ 35 | ca-certificates \ 36 | default-jdk-headless \ 37 | libxkbcommon0 \ 38 | libgl1 libegl1 \ 39 | libfontconfig1 \ 40 | libx11-6 \ 41 | libfreetype6 \ 42 | make \ 43 | perl \ 44 | software-properties-common \ 45 | sudo \ 46 | unzip \ 47 | xz-utils \ 48 | && curl -Lo install-cmake.sh https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.sh \ 49 | && chmod +x install-cmake.sh \ 50 | && ./install-cmake.sh --skip-license --prefix=/usr/local \ 51 | && rm -fv install-cmake.sh \ 52 | && curl -Lo tools.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip \ 53 | && unzip tools.zip && rm tools.zip \ 54 | && mkdir -p /opt/android-sdk/cmdline-tools/ \ 55 | && mv -v cmdline-tools /opt/android-sdk/cmdline-tools/latest \ 56 | && yes | sdkmanager --licenses \ 57 | && sdkmanager --update \ 58 | && sdkmanager "platforms;android-${ANDROID_PLATFORM_VERSION}" "platform-tools" "build-tools;${BUILD_TOOLS_VERSION}" "ndk;${ANDROID_NDK_VERSION}" ${SDKMANAGER_EXTRA_ARGS} \ 59 | && pip install --break-system-packages aqtinstall \ 60 | && aqt install-qt linux desktop ${QT_VERSION} linux_gcc_64 --outputdir /opt/qt --module qtshadertools \ 61 | && curl -Lo openssl.tar.gz https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \ 62 | && for QT_ARCH in ${QT_ARCHS} ; do \ 63 | aqt install-qt linux android ${QT_VERSION} android_${QT_ARCH} --outputdir /opt/qt ${AQT_EXTRA_ARGS} ; \ 64 | case $QT_ARCH in \ 65 | "arm64_v8a" ) OPENSSL_ARCH=arm64 ;; \ 66 | "armv7" ) OPENSSL_ARCH=arm ;; \ 67 | "x86" ) OPENSSL_ARCH=x86 ;; \ 68 | "x86_64" ) OPENSSL_ARCH=x86_64 ;; \ 69 | esac ; \ 70 | tar xzf openssl.tar.gz ; \ 71 | cd openssl-${OPENSSL_VERSION}/ ; \ 72 | sed -i 's/sub shlibvariant { $target{shlib_variant} || "" }/sub shlibvariant { "_3" }/g' ./Configurations/platform/Unix.pm ; \ 73 | ./Configure android-${OPENSSL_ARCH} shared zlib-dynamic -no-engine no-tests --prefix=/opt/qt/${QT_VERSION}/android_${QT_ARCH} -D__ANDROID_API__=28 ; \ 74 | make build_libs ; \ 75 | make install_sw ; \ 76 | cd ../ ; \ 77 | rm -rf openssl-${OPENSSL_VERSION} ; \ 78 | done \ 79 | && rm -fv openssl.tar.gz \ 80 | && pip cache purge \ 81 | && apt autoremove --purge -y ${BUILD_PACKAGES} \ 82 | && rm -rf /var/lib/apt/lists/* \ 83 | && groupadd -r user && useradd --create-home --gid user user && echo 'user ALL=NOPASSWD: ALL' > /etc/sudoers.d/user 84 | 85 | USER user 86 | WORKDIR /home/user 87 | ENV HOME=/home/user 88 | -------------------------------------------------------------------------------- /6.8-linux.Dockerfile: -------------------------------------------------------------------------------- 1 | # Docker container to build Qt 6.8 for Linux 64-bit projects with latest cmake and linuxdeployqt 2 | # Image: a12e/docker-qt:6.8-linux 3 | 4 | FROM ubuntu:20.04 5 | MAINTAINER Aurélien Brooke 6 | 7 | ARG CMAKE_VERSION=3.30.4 8 | ARG QT_VERSION=6.8.0 9 | ARG QT_CONFIGURE_OPTIONS=" \ 10 | -openssl-linked \ 11 | -skip qtopcua \ 12 | -release \ 13 | -- \ 14 | -DFEATURE_accessibility=ON \ 15 | -DFEATURE_cups=ON \ 16 | -DFEATURE_dbus_linked=ON \ 17 | -DFEATURE_directfb=OFF \ 18 | -DFEATURE_doubleconversion=ON \ 19 | -DFEATURE_fontconfig=ON \ 20 | -DFEATURE_freetype=ON \ 21 | -DFEATURE_glib=ON \ 22 | -DFEATURE_gtk=ON \ 23 | -DFEATURE_icu=ON \ 24 | -DFEATURE_jpeg=ON \ 25 | -DFEATURE_libproxy=ON \ 26 | -DFEATURE_mimetype_database=OFF \ 27 | -DFEATURE_pcre2=ON \ 28 | -DFEATURE_png=ON \ 29 | -DFEATURE_rpath=OFF \ 30 | -DFEATURE_sql_mysql=ON \ 31 | -DFEATURE_sql_odbc=ON \ 32 | -DFEATURE_sql_psql=ON \ 33 | -DFEATURE_sql_sqlite=ON \ 34 | -DFEATURE_ssl=ON \ 35 | -DFEATURE_system_jpeg=ON \ 36 | -DFEATURE_system_pcre2=ON \ 37 | -DFEATURE_system_png=ON \ 38 | -DFEATURE_system_proxies=ON \ 39 | -DFEATURE_system_sqlite=ON \ 40 | -DFEATURE_system_zlib=ON \ 41 | " 42 | ARG QT_CONFIGURE_EXTRA_OPTIONS="" 43 | 44 | RUN set -xe \ 45 | && export DEBIAN_FRONTEND=noninteractive \ 46 | && apt update \ 47 | && apt full-upgrade -y \ 48 | && apt install -y --no-install-recommends curl ca-certificates software-properties-common xz-utils \ 49 | && curl -Lo install-cmake.sh https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.sh \ 50 | && chmod +x install-cmake.sh \ 51 | && ./install-cmake.sh --skip-license --prefix=/usr/local \ 52 | && rm -fv install-cmake.sh \ 53 | && add-apt-repository ppa:ubuntu-toolchain-r/test \ 54 | && apt autoremove -y --purge software-properties-common \ 55 | && apt install -y --no-install-recommends \ 56 | g++-13 \ 57 | git openssh-client \ 58 | locales sudo \ 59 | fuse file \ 60 | && update-alternatives \ 61 | --install /usr/bin/gcc gcc /usr/bin/gcc-13 130 \ 62 | --slave /usr/bin/g++ g++ /usr/bin/g++-13 \ 63 | --slave /usr/bin/gcov gcov /usr/bin/gcov-13 \ 64 | --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-13 \ 65 | --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-13 \ 66 | --slave /usr/bin/cpp cpp /usr/bin/cpp-13 \ 67 | && apt install -y --no-install-recommends \ 68 | libasound2-dev \ 69 | libatspi2.0-dev \ 70 | libb2-dev \ 71 | libcups2-dev \ 72 | libdbus-1-dev \ 73 | libdouble-conversion-dev \ 74 | libdrm-dev \ 75 | libfontconfig-dev \ 76 | libfreetype6-dev \ 77 | libgbm-dev \ 78 | libgl-dev \ 79 | libgl1-mesa-dev \ 80 | libgles2-mesa-dev \ 81 | libglib2.0-dev \ 82 | libglu1-mesa-dev \ 83 | libgstreamer-plugins-base1.0-dev \ 84 | libgstreamer1.0-dev \ 85 | libgtk-3-dev \ 86 | libharfbuzz-dev \ 87 | libicu-dev \ 88 | libinput-dev \ 89 | libjpeg-dev \ 90 | libkrb5-dev \ 91 | liblttng-ust-dev \ 92 | libmtdev-dev \ 93 | libmysqlclient-dev \ 94 | libpcre2-dev \ 95 | libpng-dev \ 96 | libpq-dev \ 97 | libproxy-dev \ 98 | libpulse-dev \ 99 | libsctp-dev \ 100 | libsdl2-dev \ 101 | libsqlite3-dev \ 102 | libssl-dev \ 103 | libsystemd-dev \ 104 | libts-dev \ 105 | libudev-dev \ 106 | libvulkan-dev \ 107 | libwayland-dev \ 108 | libwebp-dev \ 109 | libx11-dev \ 110 | libx11-xcb-dev \ 111 | libxcb-cursor-dev \ 112 | libxcb-glx0-dev \ 113 | libxcb-icccm4-dev \ 114 | libxcb-image0-dev \ 115 | libxcb-keysyms1-dev \ 116 | libxcb-randr0-dev \ 117 | libxcb-render-util0-dev \ 118 | libxcb-render0-dev \ 119 | libxcb-shape0-dev \ 120 | libxcb-shm0-dev \ 121 | libxcb-sync-dev \ 122 | libxcb-util-dev \ 123 | libxcb-xfixes0-dev \ 124 | libxcb-xinerama0-dev \ 125 | libxcb-xinput-dev \ 126 | libxcb-xkb-dev \ 127 | libxcb1-dev \ 128 | libxext-dev \ 129 | libxfixes-dev \ 130 | libxi-dev \ 131 | libxkbcommon-dev \ 132 | libxkbcommon-x11-dev \ 133 | libxrender-dev \ 134 | libzstd-dev \ 135 | ninja-build \ 136 | pkg-config \ 137 | unixodbc-dev \ 138 | zlib1g-dev \ 139 | && curl --http1.1 --location --output - https://download.qt.io/archive/qt/$(echo "${QT_VERSION}" | cut -d. -f 1-2)/${QT_VERSION}/single/qt-everywhere-src-${QT_VERSION}.tar.xz | tar xJ \ 140 | && cd qt-everywhere-src-* \ 141 | && ./configure -prefix /usr/local ${QT_CONFIGURE_OPTIONS} ${QT_CONFIGURE_EXTRA_OPTIONS} \ 142 | && cmake --build . --parallel \ 143 | && cmake --install . \ 144 | && ldconfig -v \ 145 | && cd .. \ 146 | && rm -rf qt-everywhere-src-* \ 147 | && curl -Lo linuxdeployqt.AppImage "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" \ 148 | && chmod a+x linuxdeployqt.AppImage \ 149 | && mv -v linuxdeployqt.AppImage /usr/local/bin/linuxdeployqt \ 150 | && apt-get -qq clean \ 151 | && locale-gen en_US.UTF-8 && dpkg-reconfigure locales \ 152 | && groupadd -r user && useradd --create-home --gid user user && echo 'user ALL=NOPASSWD: ALL' > /etc/sudoers.d/user 153 | 154 | USER user 155 | WORKDIR /home/user 156 | ENV HOME=/home/user 157 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Aurélien Brooke 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | These Docker images allow you to very easily build a Qt app accross all platforms. You may use build system (e.g. Gitlab CI) to fully leverage these images. 2 | 3 | Qt toolchain Docker images 4 | ========================== 5 | 6 | Qt 6.3.2 (EOL 2023-04-12) 7 | * `a12e/docker-qt:6.3-linux` (Ubuntu 18.04 LTS, GCC 11.1, CMake 3.24.2, linuxdeployqt) 8 | 9 | Qt 6.4.3 (EOL 2023-09-29) 10 | * `a12e/docker-qt:6.4-android` (Ubuntu 22.04 LTS, CMake 3.24.2, OpenSSL 1.1.1t) 11 | * `a12e/docker-qt:6.4-linux` (Ubuntu 18.04 LTS, GCC 11.1, CMake 3.24.2, linuxdeployqt) 12 | 13 | Qt 6.5.3 LTS 14 | * `a12e/docker-qt:6.5-android` (Ubuntu 22.04 LTS, CMake 3.27.7, OpenSSL 3.0.11) 15 | * `a12e/docker-qt:6.5-linux` (Ubuntu 20.04 LTS, GCC 11.1, CMake 3.27.7, linuxdeployqt) 16 | 17 | Qt 6.7.3 (EOL 2024-10-02) 18 | * `a12e/docker-qt:6.7-android` (Ubuntu 24.04 LTS, CMake 3.30.4, OpenSSL 3.0.14) 19 | * `a12e/docker-qt:6.7-linux` (Ubuntu 20.04 LTS, GCC 13.1, CMake 3.30.4, linuxdeployqt) 20 | 21 | Qt 6.8.0 LTS 22 | * `a12e/docker-qt:6.8-android` (Ubuntu 24.04 LTS, CMake 3.30.4, OpenSSL 3.0.14) 23 | * `a12e/docker-qt:6.8-linux` (Ubuntu 20.04 LTS, GCC 13.1, CMake 3.30.4, linuxdeployqt) 24 | 25 | Android example 26 | --------------- 27 | 28 | ```sh 29 | docker run -it --rm --volume $PWD:/src a12e/docker-qt:6.8-android 30 | ``` 31 | 32 | ```sh 33 | mkdir ~/build && cd ~/build 34 | qt-cmake /src -DQT_ANDROID_BUILD_ALL_ABIS=YES 35 | cmake --build . --target aab 36 | ``` 37 | 38 | Linux example 39 | ------------- 40 | 41 | ```sh 42 | docker run -it --rm --volume $PWD:/src a12e/docker-qt:6.8-linux 43 | ``` 44 | 45 | ```sh 46 | mkdir ~/build && cd ~/build 47 | cmake /src 48 | cmake --build . --parallel 49 | cmake --install . --prefix $PWD/appdir/usr 50 | linuxdeployqt appdir/usr/share/applications/*.desktop -appimage -qmldir=/src/qml/ -extra-plugins=platforms 51 | ``` 52 | 53 | Notes 54 | ----- 55 | 56 | OpenSSL for Android is compiled and installed directly inside the Qt directory, so you can easily link to or ship it: 57 | ```cmake 58 | find_package(OpenSSL 1.1 REQUIRED) 59 | get_filename_component(OPENSSL_LIB_DIR ${OPENSSL_SSL_LIBRARY} DIRECTORY) 60 | # To make androiddeployqt deploy OpenSSL (mandatory) 61 | # Use _1_1.so suffix instead of _3.so for OpenSSL 1.1 on Qt <= 6.4 62 | set_property(TARGET MyTarget 63 | APPEND PROPERTY QT_ANDROID_EXTRA_LIBS 64 | ${OPENSSL_LIB_DIR}/libcrypto_3.so 65 | ${OPENSSL_LIB_DIR}/libssl_3.so 66 | ) 67 | # To use crypto in your app (optional) 68 | target_link_libraries(MyTarget PRIVATE 69 | OpenSSL::Crypto 70 | ) 71 | ``` 72 | 73 | Linux images are built inside a 20.04 LTS Ubuntu, to allow the AppImage to be run on older systems. Otherwise, links to too recent versions of the glibc are made. 74 | --------------------------------------------------------------------------------