While building qt base for android why are openssl headers, the jpeg, PNG, harfbuzz and freetype libraries unable to be found
Unsolved
Mobile and Embedded
-
I am trying to build qt base. I define these variables
INSTALLDIR="$1" if [ "${INSTALLDIR:0:1}" != "/" ]; then INSTALLDIR="$PWD/$INSTALLDIR" fi # Set Android NDK and target architecture ANDROID_SDK_PATH="/home/swami/Android/Sdk/" ANDROID_NDK_PATH="/home/swami/Android/Sdk/ndk/29.0.13113456/" ANDROID_API_LEVEL=21 # Adjust this to your target API level ANDROID_ARCH="arm64-v8a" # Change this to your desired architecture (e.g., armv7a, x86, etc.) export ANDROID_SDK=$ANDROID_SDK_PATH export ANDROID_NDK=$ANDROID_NDK_PATH export ANDROID_API=$ANDROID_API_LEVEL export ANDROID_ARCH=$ANDROID_ARCH
In my script I am building qt base like this:
echo "Building Qt Base..." rm -fr "qtbase-everywhere-src-$QT" tar xf "qtbase-everywhere-src-$QT.tar.xz" cd "qtbase-everywhere-src-$QT" mkdir build-host cd build-host ../configure -developer-build -nomake tests -nomake examples cmake --build . --target host_tools cd .. mkdir build cd ./build # Configure Qt for Android ../configure -prefix "$INSTALLDIR" \ -release \ -android-ndk "$ANDROID_NDK" \ -android-sdk "$ANDROID_SDK" \ -android-abis "$ANDROID_ARCH" \ -qt-host-path "../build-host" \ -qt-doubleconversion \ -ssl -openssl-runtime \ -opengl es2 \ -no-dbus \ -no-xcb \ -no-gtk \ -xkbcommon \ -- -DFEATURE_dbus=OFF \ -DFEATURE_icu=OFF \ -DFEATURE_printsupport=OFF \ -DFEATURE_sql=OFF \ -DFEATURE_system_png=ON \ -DFEATURE_system_jpeg=ON \ -DFEATURE_system_zlib=ON \ -DFEATURE_system_freetype=ON \ -DFEATURE_system_harfbuzz=ON cmake --build . --parallel ninja install cd ../../
I build the libraries that qt needs as such:
echo "Building Freetype..." git clone https://gitlab.freedesktop.org/freetype/freetype.git cd freetype ./autogen.sh ./configure --prefix="$INSTALLDIR" \ --host=arm-linux-androideabi \ --build=x86_64-linux-gnu \ --with-android-ndk=$ANDROID_NDK\ --with-zlib=yes \ --with-png=yes \ --with-harfbuzz=no make && make install cd .. echo "Building Harfbuzz..." git clone https://github.com/harfbuzz/harfbuzz.git cd harfbuzz cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_PATH/build/cmake/android.toolchain.cmake \ -DANDROID_ABI=arm64-v8a \ -DANDROID_NATIVE_API_LEVEL=21 \ -DCMAKE_PREFIX_PATH="$INSTALLDIR" \ -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" \ -DBUILD_SHARED_LIBS=ON \ -Dcoretext=disabled \ -Dfreetype=enabled \ -Dglib=disabled \ -B build \ -G Ninja cmake --build build --parallel ninja -C build install cd .. git clone https://github.com/openssl/openssl.git cd openssl git checkout openssl-3.2.2 ./Configure android-arm64 no-shared \ -D__ANDROID_API__=$ANDROID_API \ --prefix="$INSTALLDIR" \ --with-zlib-include="$INSTALLDIR/include" \ --with-zlib-lib="$INSTALLDIR/lib" make -j$(nproc) SHLIB_VERSION_NUMBER= SHLIB_EXT=_1_1.so build_libs make install cd .. echo "Building SDL..." rm -fr "$SDL" tar xf "$SDL.tar.gz" cd "$SDL" cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_PATH/build/cmake/android.toolchain.cmake \ -DANDROID_ABI=arm64-v8a \ -DANDROID_NATIVE_API_LEVEL=21 \ -DCMAKE_PREFIX_PATH="$INSTALLDIR" \ -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" \ -DBUILD_SHARED_LIBS=ON \ -DSDL_SHARED=ON \ -DSDL_STATIC=OFF \ -B build \ -G Ninja cmake --build build --parallel ninja -C build install cd ..
But i keep getting cmake errors while build qt base:
CMake Error at cmake/QtBuildInformation.cmake:534 (message): Feature "openssl_runtime": Forcing to "ON" breaks its condition: TEST_opensslv11_headers OR TEST_opensslv30_headers Condition values dump: TEST_opensslv11_headers = "FALSE" TEST_opensslv30_headers = "FALSE" Call Stack (most recent call first): cmake/QtFeature.cmake:322 (qt_configure_add_report_error) cmake/QtFeature.cmake:442 (qt_feature_check_and_save_internal_value) cmake/QtFeature.cmake:141 (qt_evaluate_feature) cmake/QtFeature.cmake:180 (qt_internal_evaluate_config_expression) cmake/QtFeature.cmake:396 (qt_evaluate_config_expression) cmake/QtFeature.cmake:711 (qt_evaluate_feature) cmake/QtBaseGlobalTargets.cmake:109 (qt_feature_module_end) cmake/QtBaseHelpers.cmake:186 (include) CMakeLists.txt:32 (qt_internal_qtbase_build_repo) CMake Error at cmake/QtBuildInformation.cmake:534 (message): Feature "system_freetype": Forcing to "ON" breaks its condition: QT_FEATURE_freetype AND WrapSystemFreetype_FOUND Condition values dump: QT_FEATURE_freetype = "ON" WrapSystemFreetype_FOUND = "FALSE" Call Stack (most recent call first): cmake/QtFeature.cmake:322 (qt_configure_add_report_error) cmake/QtFeature.cmake:442 (qt_feature_check_and_save_internal_value) cmake/QtFeature.cmake:141 (qt_evaluate_feature) cmake/QtFeature.cmake:180 (qt_internal_evaluate_config_expression) cmake/QtFeature.cmake:396 (qt_evaluate_config_expression) cmake/QtFeature.cmake:711 (qt_evaluate_feature) cmake/QtFeature.cmake:680 (qt_feature_module_end) src/CMakeLists.txt:13 (qt_feature_evaluate_features) CMake Error at cmake/QtBuildInformation.cmake:534 (message): Feature "system_harfbuzz": Forcing to "ON" breaks its condition: QT_FEATURE_harfbuzz AND WrapSystemHarfbuzz_FOUND Condition values dump: QT_FEATURE_harfbuzz = "ON" WrapSystemHarfbuzz_FOUND = "FALSE"
I am not sure I understand why, I define the prefix path so I don't understand why these libraries are not being found