Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-118608

Can not build Qt 6.5.3 for Android on Linux due to missing Qt6AndroidMacros.cmake in host tools

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P2: Important
    • None
    • 6.5.3
    • Build System: CMake
    • None
    • Android

    Description

      This issue contains two problems! And suggestions for workarounds. First, the short summary of problems and their workarounds:

      • When the host build is performed with the option for GUI disabled (i.e. when using -DFEATURE_gui=OFF), then the subsequent Android build will fail. As a workaround, enable the option for GUI in the host build.
      • When the host build is performed, it is not automatically installing the file <TARGETDIR>lib/cmake/Qt6Core/Qt6CoreConfigExtras.cmake. It is unclear if it should install this file. However without the file, the subsequent Android build will fail. As a workaround, the file can be copied manually from <SRCDIR>/qtbase/src/corelib/Qt6AndroidMacros.cmake to <TARGETDIR>/lib/cmake/Qt6Core/Qt6AndroidMacros.cmake after the host build.

      Here the more detailed description about the second issue:

      I want to build Qt for Android. As far as I know, this requires first to build Qt for the host (in my case Ubuntu 22.04 Linux), then the host build is used for the target build. The host build works for me. It is installed into /data/memmenlauer/bda/Tools. But when I start the target build, it fails with a number of errors like the following:

      -- Configuring submodule 'qtsvg'
      CMake Error at /data/memmenlauer/bda/Tools/lib/cmake/Qt6Core/Qt6CoreConfigExtras.cmake:44 (include):
        include could not find requested file:
      
          /data/memmenlauer/bda/Tools/lib/cmake/Qt6Core/Qt6AndroidMacros.cmake
      Call Stack (most recent call first):
        /data/memmenlauer/bda/Tools/lib/cmake/Qt6Core/Qt6CoreConfig.cmake:119 (include)
        /data/memmenlauer/bda/Tools/lib/cmake/Qt6/Qt6Config.cmake:157 (find_package)
        qtsvg/CMakeLists.txt:14 (find_package)
      

      or

      -- Configuring submodule 'qtimageformats'
      CMake Error at /data/memmenlauer/bda/Tools/lib/cmake/Qt6Core/Qt6CoreConfigExtras.cmake:44 (include):
        include could not find requested file:
      
          /data/memmenlauer/bda/Tools/lib/cmake/Qt6Core/Qt6AndroidMacros.cmake
      Call Stack (most recent call first):
        /data/memmenlauer/bda/Tools/lib/cmake/Qt6Core/Qt6CoreConfig.cmake:119 (include)
        /data/memmenlauer/bda/Tools/lib/cmake/Qt6/Qt6Config.cmake:157 (find_package)
        qtimageformats/CMakeLists.txt:14 (find_package)
      

      So it seems to be missing the file lib/cmake/Qt6Core/Qt6AndroidMacros.cmake, and indeed this file does not exist. But should it? I checked a number of Qt host builds on our developers machines, and the file does not exist anywhere. Is it not only created for Android builds?

      As a validation, I can say that the build succeeds when I manually copy the requested file from the Qt source folder to lib/cmake/Qt6Core/Qt6AndroidMacros.cmake.

      For the host build, I use settings:

          "-GNinja"
          "-DCMAKE_PREFIX_PATH=/data/memmenlauer/bda/Tools;/data/memmenlauer/bda/Tools/lib/cmake"
          "-DCMAKE_MODULE_PATH=/data/memmenlauer/bda/Tools/share/bda/cmake"
          "-DCMAKE_INSTALL_PREFIX=/data/memmenlauer/bda/Tools"
          "-DCMAKE_BUILD_TYPE=Release"
          "-DCMAKE_CXX_STANDARD=20"
          "-DCMAKE_CXX_STANDARD_REQUIRED=ON"
          "-DCMAKE_CXX_EXTENSIONS=NO"
          "-DCMAKE_CUDA_STANDARD=20"
          "-DCMAKE_CUDA_STANDARD_REQUIRED=OFF"
          "-DCMAKE_CUDA_ARCHITECTURES=50"
          "-DCMAKE_INSTALL_LIBDIR=lib"
          "-DCMAKE_INSTALL_DATADIR=lib"
          "-DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF"
          "-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON"
          "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
          "-DCMAKE_VERBOSE_MAKEFILE=ON"
          "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
          "-DCMAKE_VERIFY_HEADER_SETS=ON"
          "-DCMAKE_POLICY_DEFAULT_CMP0074=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0091=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0100=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0103=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0107=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0108=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0111=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0115=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0121=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0124=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0128=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0144=NEW"
          "-DCMAKE_CUDA_COMPILER=nvcc"
          "--trace-expand"
          "--trace-redirect=cmake.trace"
          "-DBUILD_qtlanguageserver=OFF"
          "-DBUILD_qttools=ON"
          "-DFEATURE_androiddeployqt=ON"
          "-DFEATURE_assistant=OFF"
          "-DFEATURE_designer=OFF"
          "-DFEATURE_distancefieldgenerator=OFF"
          "-DFEATURE_gui=ON"
          "-DFEATURE_linguist=OFF"
          "-DFEATURE_macdeployqt=OFF"
          "-DFEATURE_qtattributionsscanner=OFF"
          "-DFEATURE_windeployqt=OFF"
          "-DQT_BUILD_EXAMPLES=OFF"
          "-DQT_BUILD_EXAMPLES_BY_DEFAULT=OFF"
          "-DQT_INSTALL_EXAMPLES_SOURCES=OFF"
          "-DQT_INSTALL_EXAMPLES_SOURCES_BY_DEFAULT=OFF"
          "-DQT_BUILD_MANUAL_TESTS=OFF"
          "-DQT_BUILD_SUBMODULES=qtbase;qtsvg;qttools;qtdeclarative"
          "-DQT_BUILD_TESTS=OFF"
      

      The target build is a bit more involved. I use settings:

          "-GNinja"
          "-DCMAKE_PREFIX_PATH=/data/memmenlauer/bda/usr-dst-A33a64v8a26110909125/Debug;/data/memmenlauer/bda/usr-dst-A33a64v8a26110909125/Debug/lib/cmake;/data/memmenlauer/bda/usr-dst-A33a64v8a26110909125/Extras;/data/memmenlauer/bda/usr-dst-A33a64v8a26110909125/Extras/lib/cmake"
          "-DCMAKE_MODULE_PATH=/data/memmenlauer/bda/Tools/share/bda/cmake"
          "-DCMAKE_INSTALL_PREFIX=/data/memmenlauer/bda/usr-dst-A33a64v8a26110909125/Debug"
          "-DCMAKE_BUILD_TYPE=Debug"
          "-DCMAKE_CXX_STANDARD=20"
          "-DCMAKE_CXX_STANDARD_REQUIRED=ON"
          "-DCMAKE_CXX_EXTENSIONS=NO"
          "-DCMAKE_CUDA_STANDARD=20"
          "-DCMAKE_CUDA_STANDARD_REQUIRED=OFF"
          "-DCMAKE_CUDA_ARCHITECTURES=50"
          "-DCMAKE_INSTALL_LIBDIR=lib"
          "-DCMAKE_INSTALL_DATADIR=lib"
          "-DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF"
          "-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON"
          "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
          "-DCMAKE_VERBOSE_MAKEFILE=ON"
          "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
          "-DCMAKE_VERIFY_HEADER_SETS=ON"
          "-DCMAKE_POLICY_DEFAULT_CMP0074=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0091=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0100=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0103=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0107=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0108=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0111=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0115=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0121=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0124=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0128=NEW"
          "-DCMAKE_POLICY_DEFAULT_CMP0144=NEW"
          "-DCMAKE_CUDA_COMPILER=nvcc"
          "-DQT_HOST_PATH=/data/memmenlauer/bda/Tools"
          "-DANDROID_SDK_ROOT=/opt/bda/android-sdk"
          "-DQT_QMAKE_TARGET_MKSPEC=android-clang"
          "-DCMAKE_TOOLCHAIN_FILE=/opt/bda/android-sdk/ndk/26.1.10909125/build/cmake/android.toolchain.cmake"
          "-DANDROID_ALLOW_UNDEFINED_VERSION_SCRIPT_SYMBOLS=ON"
          "-DANDROID_PLATFORM=android-33"
          "-DANDROID_ABI=arm64-v8a"
          "-DCMAKE_FIND_ROOT_PATH=/data/memmenlauer/bda/usr-dst-A33a64v8a26110909125/Debug;/data/memmenlauer/bda/Tools;/data/memmenlauer/bda/Tools/share/bda/cmake"
          "-DTHRIFT_COMPILER=/data/memmenlauer/bda/Tools/bin/thrift"
          "-DQT_ANDROID_JAVAC_SOURCE=8"
          "-DQT_ANDROID_JAVAC_TARGET=8"
          "--trace-expand"
          "--trace-redirect=cmake.trace"
          "-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=OFF"
          "-DBUILD_SHARED_LIBS=ON"
          "-DBUILD_WITH_PCH=ON"
          "-DBUILD_qtlanguageserver=OFF"
          "-DBUILD_qttools=OFF"
          "-DFEATURE_android_style_assets=ON"
          "-DFEATURE_avx=OFF"
          "-DFEATURE_avx2=OFF"
          "-DFEATURE_avx512bw=OFF"
          "-DFEATURE_avx512cd=OFF"
          "-DFEATURE_avx512dq=OFF"
          "-DFEATURE_avx512er=OFF"
          "-DFEATURE_avx512f=OFF"
          "-DFEATURE_avx512ifma=OFF"
          "-DFEATURE_avx512pf=OFF"
          "-DFEATURE_avx512vbmi=OFF"
          "-DFEATURE_avx512vbmi2=OFF"
          "-DFEATURE_avx512vl=OFF"
          "-DFEATURE_clang=OFF"
          "-DFEATURE_clangcpp=OFF"
          "-DFEATURE_cupsjobwidget=OFF"
          "-DFEATURE_cxx20=ON"
          "-DFEATURE_developer_build=OFF"
          "-DFEATURE_distancefieldgenerator=OFF"
          "-DFEATURE_dtls=OFF"
          "-DFEATURE_enable_new_dtags=OFF"
          "-DFEATURE_framework=OFF"
          "-DFEATURE_gif=OFF"
          "-DFEATURE_hijricalendar=OFF"
          "-DFEATURE_icu=ON"
          "-DFEATURE_imageformat_bmp=OFF"
          "-DFEATURE_islamiccivilcalendar=OFF"
          "-DFEATURE_jalalicalendar=OFF"
          "-DFEATURE_jasper=OFF"
          "-DFEATURE_journald=OFF"
          "-DFEATURE_kms=OFF"
          "-DFEATURE_libproxy=OFF"
          "-DFEATURE_linguist=OFF"
          "-DFEATURE_macdeployqt=OFF"
          "-DFEATURE_mips_dsp=OFF"
          "-DFEATURE_mips_dspr2=OFF"
          "-DFEATURE_mng=OFF"
          "-DFEATURE_movie=OFF"
          "-DFEATURE_networkproxy=OFF"
          "-DFEATURE_optimize_full=OFF"
          "-DFEATURE_pdf=OFF"
          "-DFEATURE_printpreviewdialog=OFF"
          "-DFEATURE_printpreviewwidget=OFF"
          "-DFEATURE_qtattributionsscanner=OFF"
          "-DFEATURE_reduce_exports=ON"
          "-DFEATURE_schannel=OFF"
          "-DFEATURE_sql=OFF"
          "-DFEATURE_sse4_1=OFF"
          "-DFEATURE_sse4_2=OFF"
          "-DFEATURE_sspi=OFF"
          "-DFEATURE_ssse3=OFF"
          "-DFEATURE_syslog=OFF"
          "-DFEATURE_system_doubleconversion=ON"
          "-DFEATURE_system_freetype=ON"
          "-DFEATURE_system_jpeg=ON"
          "-DFEATURE_system_pcre2=ON"
          "-DFEATURE_system_png=ON"
          "-DFEATURE_system_webp=OFF"
          "-DFEATURE_system_zlib=ON"
          "-DFEATURE_tuiotouch=OFF"
          "-DFEATURE_vnc=OFF"
          "-DFEATURE_vsp2=OFF"
          "-DFEATURE_webp=OFF"
          "-DFEATURE_zstd=ON"
          "-DQT_BUILD_EXAMPLES=OFF"
          "-DQT_BUILD_EXAMPLES_BY_DEFAULT=OFF"
          "-DQT_BUILD_SUBMODULES=qtbase;qtsvg;qttools;qtwebsockets;qtdeclarative"
          "-DQT_BUILD_TESTS=OFF"
      

      Attached are the build details for host and target build. The target build only has cmake.trace and CMakeCache.txt, I hope that this is sufficient to reconstruct the problem?

      To be sure there is no mistake on my side, here are the detailed build instructions:

      # Remove absolutely all build system files:
      rm -fr ${BDASOFTBUILD}/{ccache,install,scripts,tmp,Tools,usr-*}
      
      # Build all dependencies first:
      "${BDASOFTSRC}/BDAScripts/bin/bda-build.sh" --verbose="20" --project-group="Android" --all-starting-from="BDAScripts" --all-up-until="freetype" --build
      
      # Build Qt for the host platform (minimal release build):
      cd "${HOME}/BDA/Src/qt/" && \
      ./bda-build-project.sh --verbose="20" --tool --build >/tmp/qt-host-build.log 2>&1
      
      # Move the Qt temporary build directory away, so the build can not find it:
      cd "${BDASOFTTEMP}/Tools/" && \
      mv "qt" "/tmp/qt-host-build" && \
      mv -iv "/tmp/qt-host-build.log" "/tmp/qt-host-build/"
      
      # Remove all *temporary* build system files (unneeded, just for safety):
      rm -fr ${BDASOFTBUILD}/{ccache,tmp,usr-tmp-*}
      
      # Build Qt for the target platform (debug build):
      cd "${HOME}/BDA/Src/qt/" && \
      ./bda-build-project.sh --verbose="20" --debug --build >/tmp/qt-target-build.log 2>&1
      
      # Preserve the Qt temporary build directory:
      cd "${BDASOFTTEMP}/Debug/" && \
      mv "qt" "/tmp/qt-target-build" && \
      mv -iv "/tmp/qt-target-build.log" "/tmp/qt-target-build/"
      

      Here are links to the full compressed temporary build folders, including all trace files and build logs:

      Attachments

        1. QTBUG-118608-host-build.zip
          4.12 MB
          Mario Emmenlauer
        2. QTBUG-118608-target-build.zip
          3.47 MB
          Mario Emmenlauer
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            qtbuildsystem Qt Build System Team
            emmenlau Mario Emmenlauer
            Votes:
            2 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes