Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. QGCS error for Android
Forum Update on Monday, May 27th 2025

QGCS error for Android

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
21 Posts 2 Posters 1.3k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • I InsideFPV

    FAILED: Release/libQGroundControl_arm64-v8a.so
    C:\Windows\system32\cmd.exe /C "cd . && C:\Users\Software\AppData\Local\Android\Sdk\ndk\26.1.10909125\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=aarch64-none-linux-android23 --sysroot=C:/Users/Software/AppData/Local/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fexceptions -frtti -stdlib=libc++ -O3 -DNDEBUG -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--gc-sections -Qunused-arguments -Wl,--no-undefined -Wl,-Bsymbolic -shared -o Release\libQGroundControl_arm64-v8a.so @CMakeFiles\QGroundControl.rsp && cd ."
    ld.lld: error: unable to find library -lpng
    clang++: error: linker command failed with exit code 1 (use -v to see invocation)
    ninja: build stopped: subcommand failed.
    10:44:07: The process "C:\Program Files\CMake\bin\cmake.exe" exited with code 1.
    10:44:07: Error while building/deploying project QGroundControl (kit: Android Qt 6.8.2 Clang arm64-v8a)
    10:44:07: When executing step "Build"
    10:44:07: Elapsed time: 08:59.
    Capture7.PNG Capture8.PNG Capture12.PNG

    I have the error when I am build the project for android please if any have solutions please ping me.

    jsulmJ Offline
    jsulmJ Offline
    jsulm
    Lifetime Qt Champion
    wrote on last edited by
    #2

    @InsideFPV said in QGCS error for Android:

    ld.lld: error: unable to find library -lpng

    Linker cannot find libpng library.
    Do you link to libpng explicitly (in your CMakeLists.txt file)?

    https://forum.qt.io/topic/113070/qt-code-of-conduct

    I 1 Reply Last reply
    0
    • jsulmJ jsulm

      @InsideFPV said in QGCS error for Android:

      ld.lld: error: unable to find library -lpng

      Linker cannot find libpng library.
      Do you link to libpng explicitly (in your CMakeLists.txt file)?

      I Offline
      I Offline
      InsideFPV
      wrote on last edited by
      #3

      @jsulm do we have to externally add and from where i can download this library , i am adding chatgpt solution but it will not resolve please give me solution if you have any idea for this like how to link..?

      jsulmJ 1 Reply Last reply
      0
      • I InsideFPV

        @jsulm do we have to externally add and from where i can download this library , i am adding chatgpt solution but it will not resolve please give me solution if you have any idea for this like how to link..?

        jsulmJ Offline
        jsulmJ Offline
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #4

        @InsideFPV said in QGCS error for Android:

        please give me solution

        Please answer my question first: do you link to libpng explicitly (in your CMakeLists.txt file)?

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        I 1 Reply Last reply
        0
        • jsulmJ jsulm

          @InsideFPV said in QGCS error for Android:

          please give me solution

          Please answer my question first: do you link to libpng explicitly (in your CMakeLists.txt file)?

          I Offline
          I Offline
          InsideFPV
          wrote on last edited by
          #5

          @jsulm No sir
          I am adding full cmakelist.txt please check

          cmake_minimum_required(VERSION 3.25)

          list(APPEND CMAKE_MODULE_PATH
          ${CMAKE_SOURCE_DIR}/cmake
          ${CMAKE_SOURCE_DIR}/cmake/modules
          ${CMAKE_SOURCE_DIR}/cmake/find-modules
          )

          if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
          set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
          set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug;Release")
          endif()

          set(CMAKE_REQUIRED_QUIET ON)

          #######################################################

          Custom Build Configuration

          #######################################################

          include(CustomOptions)

          if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/custom)
          message(STATUS "Enabling custom build")
          set(QGC_CUSTOM_BUILD ON)
          list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/custom/cmake)
          include(CustomOverrides)
          endif()

          #######################################################

          Project Info

          #######################################################

          set(CMAKE_OSX_ARCHITECTURES "arm64")

          set(CMAKE_OSX_SYSROOT "iphoneos")

          if(APPLE)
          set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0")
          endif()

          include(Git)

          project(${QGC_APP_NAME}
          VERSION ${QGC_APP_VERSION}
          DESCRIPTION ${QGC_APP_DESCRIPTION}
          HOMEPAGE_URL "https://qgroundcontrol.com/"
          LANGUAGES C CXX
          )

          if(APPLE AND NOT IOS)
          set(MACOS TRUE)
          endif()

          #######################################################

          CMake Configuration Options

          #######################################################

          include(GNUInstallDirs)
          include(FetchContent)
          include(CMakePrintHelpers)

          set(CMAKE_CXX_STANDARD 20)
          set(CMAKE_CXX_STANDARD_REQUIRED ON)

          set(CMAKE_AUTOMOC ON)
          set(CMAKE_AUTOUIC ON)
          set(CMAKE_AUTORCC ON)

          set(CMAKE_INCLUDE_CURRENT_DIR ON)
          set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
          set(CMAKE_POSITION_INDEPENDENT_CODE ON)

          if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
          if(LINUX)
          set_property(CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "${CMAKE_BINARY_DIR}/AppDir/usr")
          else()
          set_property(CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "${CMAKE_BINARY_DIR}/staging")
          endif()
          endif()

          if(QGC_USE_CACHE)
          if(CMAKE_HOST_UNIX)
          find_program(CCACHE_PROGRAM ccache)
          if(CCACHE_PROGRAM)
          message(STATUS "Using CCache")
          set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
          set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
          if(APPLE)
          set(CMAKE_OBJC_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
          endif()
          endif()
          elseif(CMAKE_HOST_WIN32)
          find_program(SCCACHE_PROGRAM sccache)
          if(SCCACHE_PROGRAM)
          message(STATUS "Using SCCache")
          set(CMAKE_C_COMPILER_LAUNCHER ${SCCACHE_PROGRAM})
          set(CMAKE_CXX_COMPILER_LAUNCHER ${SCCACHE_PROGRAM})
          endif()
          endif()
          endif()

          if(MSVC)
          set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded)
          endif()

          if(CMAKE_CROSSCOMPILING AND ANDROID)
          set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
          set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
          set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)
          endif()

          set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIGURATION>/lib)
          set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIGURATION>)
          set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIGURATION>)

          https://cmake.org/cmake/help/latest/policy/CMP0168.html#policy:CMP0168

          if(POLICY CMP0168)
          cmake_policy(SET CMP0168 NEW)
          set(CMAKE_POLICY_DEFAULT_CMP0168 NEW)
          endif()

          https://cmake.org/cmake/help/latest/policy/CMP0075.html#policy:CMP0075

          if(POLICY CMP0075)
          cmake_policy(SET CMP0075 NEW)
          set(CMAKE_POLICY_DEFAULT_CMP0075 NEW)
          endif()

          if(QGC_USE_IWYU)
          include(IWYU)
          endif()

          #######################################################

          Qt6 Configuration

          #######################################################

          if(CMAKE_CROSSCOMPILING AND NOT IS_DIRECTORY ${QT_HOST_PATH})
          message(FATAL_ERROR "You need to set QT_HOST_PATH to cross compile Qt.")
          endif()

          find_program(QMAKE_EXECUTABLE NAMES qmake HINTS ${QT_ROOT_DIR} ${QTDIR} ENV QTDIR PATH_SUFFIXES bin)
          execute_process(COMMAND ${QMAKE_EXECUTABLE} -query QT_VERSION OUTPUT_VARIABLE QT_VERSION)
          if(QT_VERSION LESS QT_MINIMUM_VERSION)
          MESSAGE(FATAL_ERROR "Minimum supported Qt version: ${QT_MINIMUM_VERSION}.
          Installed version: ${QT_VERSION}")
          endif()

          add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x060800)

          if(CMAKE_BUILD_TYPE STREQUAL "Release")
          add_compile_definitions(
          NDEBUG
          QT_NO_DEBUG
          QT_NO_DEBUG_OUTPUT
          )
          elseif(CMAKE_BUILD_TYPE STREQUAL "Debug")
          include(CTest)
          endif()

          if(ANDROID)
          list(APPEND QT_ANDROID_MULTI_ABI_FORWARD_VARS QGC_STABLE_BUILD QT_HOST_PATH)
          endif()

          find_package(Qt6
          ${QT_MINIMUM_VERSION}
          REQUIRED
          COMPONENTS
          Concurrent
          Core
          Core5Compat
          Location
          Multimedia
          Network
          OpenGL
          Positioning
          Qml
          QmlIntegration
          Quick
          QuickControls2
          QuickWidgets
          Sensors
          Sql
          Svg
          TextToSpeech
          Widgets
          Xml
          OPTIONAL_COMPONENTS
          Bluetooth
          Charts
          LinguistTools
          MultimediaQuickPrivate
          Quick3D
          Quick3DTools
          SerialPort
          Test
          HINTS
          ${QT_LIBRARY_HINTS}
          )

          if(LINUX)
          find_package(Qt6 ${QT_MINIMUM_VERSION} COMPONENTS WaylandClient)
          endif()

          Set extra standard project setup options for Qt 6.7.0 and above

          set(EXTRA_STANDARD_PROJECT_SETUP_OPTIONS)
          if(QT_VERSION VERSION_GREATER_EQUAL 6.8.2)
          list(APPEND EXTRA_STANDARD_PROJECT_SETUP_OPTIONS I18N_SOURCE_LANGUAGE en)
          endif()

          qt_standard_project_setup(
          REQUIRES ${QGC_QT_MINIMUM_VERSION}
          SUPPORTS_UP_TO ${QGC_QT_MAXIMUM_VERSION}
          ${EXTRA_STANDARD_PROJECT_SETUP_OPTIONS}
          )

          qt_policy(
          SET QTP0001 NEW
          SET QTP0002 NEW
          SET QTP0003 NEW
          SET QTP0004 NEW
          SET QTP0005 NEW
          )

          #######################################################

          QGroundControl Options

          #######################################################

          add_compile_definitions(
          $<$<NOT:$BOOL:${QGC_STABLE_BUILD}>:QGC_DAILY_BUILD>
          $<$BOOL:${QGC_BUILD_TESTING}:QGC_UNITTEST_BUILD>
          $<$BOOL:${QGC_DEBUG_QML}:QT_QML_DEBUG>
          $<$BOOL:${QGC_DISABLE_APM_MAVLINK}:QGC_NO_ARDUPILOT_DIALECT>
          $<$BOOL:${QGC_VIEWER3D}:QGC_VIEWER3D>
          )

          if(NOT QGC_BUILD_TESTING)
          set(BUILD_TESTING OFF CACHE INTERNAL "" FORCE)
          endif()

          if("${CMAKE_OSX_ARCHITECTURES}" MATCHES "arm64;x86_64" OR "${CMAKE_OSX_ARCHITECTURES}" MATCHES "x86_64;arm64")
          set(MACOS_UNIVERSAL_BUILD ON)
          endif()

          TODO: Force building dependencies if(NOT CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL CMAKE_SYSTEM_PROCESSOR)?

          if(CMAKE_OSX_ARCHITECTURES AND NOT "${CMAKE_HOST_SYSTEM_PROCESSOR}" IN_LIST CMAKE_OSX_ARCHITECTURES)

          include(CPM)
          if(CMAKE_CROSSCOMPILING OR ANDROID OR MACOS_UNIVERSAL_BUILD)
          set(CPM_DOWNLOAD_ALL ON)
          endif()

          #######################################################

          Custom Build Configuration

          #######################################################

          if(QGC_CUSTOM_BUILD)
          add_subdirectory(custom)
          endif()

          #######################################################

          QGroundControl Resources

          #######################################################

          Note: Adding Resources to Library instead requires using Q_INIT_RESOURCE(qgcresources)

          if(NOT QGC_CUSTOM_BUILD)
          # Custom builds can override the resources
          list(APPEND QGC_RESOURCES
          ${CMAKE_SOURCE_DIR}/qgcimages.qrc
          ${CMAKE_SOURCE_DIR}/qgcresources.qrc
          ${CMAKE_SOURCE_DIR}/qgroundcontrol.qrc
          )
          endif()

          list(APPEND QGC_RESOURCES
          ${CMAKE_SOURCE_DIR}/resources/InstrumentValueIcons/InstrumentValueIcons.qrc
          ${CMAKE_SOURCE_DIR}/src/FirmwarePlugin/APM/APMResources.qrc
          ${CMAKE_SOURCE_DIR}/src/FirmwarePlugin/PX4/PX4Resources.qrc
          )

          if(QGC_UTM_ADAPTER)
          list(APPEND QGC_RESOURCES ${CMAKE_SOURCE_DIR}/src/UTMSP/utmsp.qrc)
          else()
          list(APPEND QGC_RESOURCES ${CMAKE_SOURCE_DIR}/src/UTMSP/dummy/utmsp_dummy.qrc)
          endif()

          if(QGC_BUILD_TESTING)
          list(APPEND QGC_RESOURCES ${CMAKE_SOURCE_DIR}/test/UnitTest.qrc)
          endif()

          #######################################################

          QGroundControl Target

          #######################################################

          qt_add_executable(${CMAKE_PROJECT_NAME}
          WIN32
          MACOSX_BUNDLE
          src/main.cc
          ${QGC_RESOURCES}
          )

          if(NOT ANDROID AND NOT IOS)
          target_sources(${CMAKE_PROJECT_NAME}
          PRIVATE
          src/RunGuard.cc
          src/RunGuard.h
          )
          endif()

          target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src)

          if(Qt6LinguistTools_FOUND)
          file(GLOB TS_SOURCES ${CMAKE_SOURCE_DIR}/translations/qgc_*.ts)
          set_source_files_properties(${TS_SOURCES} PROPERTIES OUTPUT_LOCATION "${CMAKE_BINARY_DIR}/i18n")
          qt_add_translations(${CMAKE_PROJECT_NAME}
          # TS_FILE_BASE ${CMAKE_PROJECT_NAME}
          # TS_FILE_DIR ${CMAKE_SOURCE_DIR}/translations/
          TS_FILES ${TS_SOURCES}
          RESOURCE_PREFIX "/"
          LUPDATE_OPTIONS -no-obsolete
          )
          endif()

          set_target_properties(${CMAKE_PROJECT_NAME}
          PROPERTIES
          QT_RESOURCE_PREFIX "/qgc"
          OUTPUT_NAME ${CMAKE_PROJECT_NAME}
          )

          if(WIN32)
          # windows installer files shared with core and custom
          set(DEPLOY_WIN_FILES
          "${CMAKE_SOURCE_DIR}/deploy/windows/driver.msi"
          "${CMAKE_SOURCE_DIR}/deploy/windows/nullsoft_installer.nsi"
          "${CMAKE_SOURCE_DIR}/deploy/windows/QGroundControl.rc"
          "${QGC_WINDOWS_INSTALL_HEADER_PATH}"
          "${QGC_WINDOWS_ICON_PATH}"
          )

          # Destination directory where files will be copied
          set(QGC_INSTALLER_SOURCE_WIN "${CMAKE_BINARY_DIR}/deploy/windows")
          file(MAKE_DIRECTORY ${QGC_INSTALLER_SOURCE_WIN})
          foreach(FILE ${DEPLOY_WIN_FILES})
              # filename without the path
              get_filename_component(FILE_NAME ${FILE} NAME)
              # re-copy the file if it changes
              add_custom_command(
                  OUTPUT "${QGC_INSTALLER_SOURCE_WIN}/${FILE_NAME}"
                  COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FILE}" "${QGC_INSTALLER_SOURCE_WIN}/${FILE_NAME}"
                  DEPENDS "${FILE}"  # Depend on the source file so that it re-copies when it changes
              )
              list(APPEND QGC_INSTALLER_SOURCE_WIN_FILES "${QGC_INSTALLER_SOURCE_WIN}/${FILE_NAME}")
          endforeach()
          
          target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${QGC_INSTALLER_SOURCE_WIN_FILES})
          set_target_properties(${CMAKE_PROJECT_NAME}
              PROPERTIES
                  WIN32_EXECUTABLE TRUE
                  QT_TARGET_RC_ICONS "${QGC_WINDOWS_ICON_PATH}"
          )
          add_compile_definitions(_USE_MATH_DEFINES)
          

          elseif(MACOS)
          set(MACOSX_BUNDLE_ICON_FILE "macx.icns")
          set(app_icon_macos "${QGC_MACOS_ICON_PATH}/macx.icns")
          set_source_files_properties(${app_icon_macos} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
          target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${app_icon_macos})
          set_target_properties(${CMAKE_PROJECT_NAME}
          PROPERTIES
          MACOSX_BUNDLE TRUE
          MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/deploy/macos/MacOSXBundleInfo.plist.in"
          MACOSX_BUNDLE_BUNDLE_NAME "${CMAKE_PROJECT_NAME}"
          MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_VERSION}"
          MACOSX_BUNDLE_COPYRIGHT "${QGC_APP_COPYRIGHT}"
          MACOSX_BUNDLE_GUI_IDENTIFIER "${QGC_BUNDLE_ID}"
          MACOSX_BUNDLE_ICON_FILE "macx.icns"
          MACOSX_BUNDLE_INFO_STRING "${QGC_APP_DESCRIPTION}"
          MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"
          MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"
          )
          elseif(IOS)
          enable_language(OBJC)

          set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "14.0")
          set(CMAKE_XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2") # iPhone,iPad
          set(CMAKE_XCODE_ATTRIBUTE_INFOPLIST_FILE "${CMAKE_CURRENT_SOURCE_DIR}/deploy/ios/iOS-Info.plist")
          
          set_target_properties(${CMAKE_PROJECT_NAME}
              PROPERTIES
                  QT_IOS_LAUNCH_SCREEN ${CMAKE_SOURCE_DIR}/deploy/ios/QGCLaunchScreen.xib
                  XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "org.mavlink.qgroundcontrol"
                  XCODE_ATTRIBUTE_PRODUCT_NAME ${CMAKE_PROJECT_NAME}
                  XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION ${CMAKE_PROJECT_VERSION}
                  XCODE_ATTRIBUTE_MARKETING_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
                  XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME "AppIcon"
                  XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "14.0"
                  XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2" # iPhone,iPad
                  XCODE_ATTRIBUTE_INFOPLIST_KEY_CFBundleDisplayName ${CMAKE_PROJECT_NAME}
                  XCODE_ATTRIBUTE_INFOPLIST_KEY_LSApplicationCategoryType "public.app-category.mycategory"
                  XCODE_ATTRIBUTE_GCC_GENERATE_DEBUGGING_SYMBOLS "YES"
          )
          
          # set(QT_NO_FFMPEG_XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY ON)
          qt_add_ios_ffmpeg_libraries(${CMAKE_PROJECT_NAME})
          

          elseif(ANDROID)
          include(CPM)
          CPMAddPackage(
          NAME android_openssl
          URL https://github.com/KDAB/android_openssl/archive/refs/heads/master.zip
          )
          include(${android_openssl_SOURCE_DIR}/android_openssl.cmake)
          add_android_openssl_libraries(${CMAKE_PROJECT_NAME})

          set(ANDROID_PLATFORM_ARCHITECTURE_CODE)
          if(${ANDROID_ABI} STREQUAL "armeabi-v7a")
              set(ANDROID_PLATFORM_ARCHITECTURE_CODE "032")
          elseif(${ANDROID_ABI} STREQUAL "arm64-v8a")
              set(ANDROID_PLATFORM_ARCHITECTURE_CODE "064")
          elseif(${ANDROID_ABI} STREQUAL "x86")
              set(ANDROID_PLATFORM_ARCHITECTURE_CODE "132")
          elseif(${ANDROID_ABI} STREQUAL "x86_64")
              set(ANDROID_PLATFORM_ARCHITECTURE_CODE "164")
          endif()
          set(ANDROID_VERSION_CODE "${ANDROID_PLATFORM_ARCHITECTURE_CODE}${PROJECT_VERSION_MAJOR}${PROJECT_VERSION_MINOR}")
          
          set_target_properties(${CMAKE_PROJECT_NAME}
              PROPERTIES
                  # QT_ANDROID_ABIS ${ANDROID_ABI}
                  QT_ANDROID_MIN_SDK_VERSION ${QGC_QT_ANDROID_MIN_SDK_VERSION}
                  QT_ANDROID_TARGET_SDK_VERSION ${QGC_QT_ANDROID_TARGET_SDK_VERSION}
                  QT_ANDROID_PACKAGE_NAME "${QGC_ANDROID_PACKAGE_NAME}"
                  QT_ANDROID_PACKAGE_SOURCE_DIR "${QGC_ANDROID_PACKAGE_SOURCE_DIR}"
                  QT_ANDROID_VERSION_NAME ${CMAKE_PROJECT_VERSION}
                  QT_ANDROID_VERSION_CODE ${ANDROID_VERSION_CODE}
                  QT_QML_ROOT_PATH ${CMAKE_SOURCE_DIR}
                  # QT_ANDROID_SDK_BUILD_TOOLS_REVISION
                  # QT_ANDROID_SYSTEM_LIBS_PREFIX
          )
          

          endif()

          add_compile_definitions(
          QGC_APP_NAME="${QGC_APP_NAME}"
          QGC_ORG_NAME="${QGC_ORG_NAME}"
          QGC_ORG_DOMAIN="${QGC_ORG_DOMAIN}"
          QGC_APP_VERSION_STR="${QGC_APP_VERSION_STR}"
          QGC_SETTINGS_VERSION=${QGC_SETTINGS_VERSION}
          )

          add_subdirectory(src)

          target_link_libraries(${CMAKE_PROJECT_NAME}
          PRIVATE
          Qt6::Core
          Qt6::Core5Compat
          Qt6::Quick
          Qt6::Svg
          Qt6::Widgets
          QGC
          QmlControls

          )

          target_link_libraries(QGroundControl
          PUBLIC
          -ljpeg
          -lpng
          )

          if(ANDROID)
          # Find JPEG library in NDK sysroot, Qt paths, or project paths
          find_library(JPEG_LIBRARY jpeg
          PATHS
          ${ANDROID_NDK}/sysroot/usr/lib/${ANDROID_ABI} # NDK sysroot for the ABI
          ${ANDROID_NDK}/platforms/android-${QGC_QT_ANDROID_MIN_SDK_VERSION}/arch-arm64/usr/lib # Alternative NDK path
          ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI} # Project-specific libraries
          ${QT_LIBRARY_DIR} # Qt library directory (if applicable)
          NO_DEFAULT_PATH # Restrict to these paths only
          )

          # Find PNG library (you’ll need to do the same for PNG if it’s missing)
          find_library(PNG_LIBRARY png
              PATHS
                  ${ANDROID_NDK}/sysroot/usr/lib/${ANDROID_ABI}
                  ${ANDROID_NDK}/platforms/android-${QGC_QT_ANDROID_MIN_SDK_VERSION}/arch-arm64/usr/lib
                  ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}
                  ${QT_LIBRARY_DIR}
              NO_DEFAULT_PATH
          )
          
          # Check if libraries are found
          if(NOT JPEG_LIBRARY)
              message(WARNING "JPEG library not found. Ensure libjpeg is available for ${ANDROID_ABI}. Attempting to proceed without it.")
              # Optionally, you can specify a fallback path or disable linking if not critical
              # set(JPEG_LIBRARY "")  # Comment out or handle gracefully
          endif()
          if(NOT PNG_LIBRARY)
              message(WARNING "PNG library not found. Ensure libpng is available for ${ANDROID_ABI}. Attempting to proceed without it.")
              # set(PNG_LIBRARY "")  # Comment out or handle gracefully
          endif()
          
          # Link the libraries (only if found)
          if(JPEG_LIBRARY)
              target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ${JPEG_LIBRARY})
          endif()
          if(PNG_LIBRARY)
              target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ${PNG_LIBRARY})
          endif()
          
          # Continue with other Android-specific configurations
          target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/android/src/AndroidInit.cc)
          target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/android/src)
          
          target_link_libraries(${CMAKE_PROJECT_NAME}
              PRIVATE
                  Qt6::Core
                  Joystick
                  Utilities
          )
          
          if(NOT QGC_NO_SERIAL_LINK)
              target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE Comms)
          endif()
          

          endif()
          #target_link_libraries(QGroundControl PRIVATE C:/libpng/build/libpng.a)

          if(QGC_BUILD_TESTING)
          add_subdirectory(test)
          target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE qgctest)
          endif()

          if(ANDROID)
          target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/android/src/AndroidInit.cc)

          target_link_libraries(${CMAKE_PROJECT_NAME}
              PRIVATE
                  Qt6::Core
                  Joystick
                  Utilities
          )
          
          target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/android/src)
          
          if(NOT QGC_NO_SERIAL_LINK)
              target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE Comms)
          endif()
          

          endif()

          qt_import_plugins(${CMAKE_PROJECT_NAME}
          INCLUDE Qt6::QSvgPlugin
          EXCLUDE_BY_TYPE geoservices
          INCLUDE_BY_TYPE sqldrivers Qt6::QSQLiteDriverPlugin
          )

          include(Install)

          include(PrintSummary)

          jsulmJ 1 Reply Last reply
          0
          • I InsideFPV

            @jsulm No sir
            I am adding full cmakelist.txt please check

            cmake_minimum_required(VERSION 3.25)

            list(APPEND CMAKE_MODULE_PATH
            ${CMAKE_SOURCE_DIR}/cmake
            ${CMAKE_SOURCE_DIR}/cmake/modules
            ${CMAKE_SOURCE_DIR}/cmake/find-modules
            )

            if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
            set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
            set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug;Release")
            endif()

            set(CMAKE_REQUIRED_QUIET ON)

            #######################################################

            Custom Build Configuration

            #######################################################

            include(CustomOptions)

            if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/custom)
            message(STATUS "Enabling custom build")
            set(QGC_CUSTOM_BUILD ON)
            list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/custom/cmake)
            include(CustomOverrides)
            endif()

            #######################################################

            Project Info

            #######################################################

            set(CMAKE_OSX_ARCHITECTURES "arm64")

            set(CMAKE_OSX_SYSROOT "iphoneos")

            if(APPLE)
            set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0")
            endif()

            include(Git)

            project(${QGC_APP_NAME}
            VERSION ${QGC_APP_VERSION}
            DESCRIPTION ${QGC_APP_DESCRIPTION}
            HOMEPAGE_URL "https://qgroundcontrol.com/"
            LANGUAGES C CXX
            )

            if(APPLE AND NOT IOS)
            set(MACOS TRUE)
            endif()

            #######################################################

            CMake Configuration Options

            #######################################################

            include(GNUInstallDirs)
            include(FetchContent)
            include(CMakePrintHelpers)

            set(CMAKE_CXX_STANDARD 20)
            set(CMAKE_CXX_STANDARD_REQUIRED ON)

            set(CMAKE_AUTOMOC ON)
            set(CMAKE_AUTOUIC ON)
            set(CMAKE_AUTORCC ON)

            set(CMAKE_INCLUDE_CURRENT_DIR ON)
            set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
            set(CMAKE_POSITION_INDEPENDENT_CODE ON)

            if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
            if(LINUX)
            set_property(CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "${CMAKE_BINARY_DIR}/AppDir/usr")
            else()
            set_property(CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "${CMAKE_BINARY_DIR}/staging")
            endif()
            endif()

            if(QGC_USE_CACHE)
            if(CMAKE_HOST_UNIX)
            find_program(CCACHE_PROGRAM ccache)
            if(CCACHE_PROGRAM)
            message(STATUS "Using CCache")
            set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
            set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
            if(APPLE)
            set(CMAKE_OBJC_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
            endif()
            endif()
            elseif(CMAKE_HOST_WIN32)
            find_program(SCCACHE_PROGRAM sccache)
            if(SCCACHE_PROGRAM)
            message(STATUS "Using SCCache")
            set(CMAKE_C_COMPILER_LAUNCHER ${SCCACHE_PROGRAM})
            set(CMAKE_CXX_COMPILER_LAUNCHER ${SCCACHE_PROGRAM})
            endif()
            endif()
            endif()

            if(MSVC)
            set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded)
            endif()

            if(CMAKE_CROSSCOMPILING AND ANDROID)
            set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
            set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
            set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)
            endif()

            set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIGURATION>/lib)
            set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIGURATION>)
            set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIGURATION>)

            https://cmake.org/cmake/help/latest/policy/CMP0168.html#policy:CMP0168

            if(POLICY CMP0168)
            cmake_policy(SET CMP0168 NEW)
            set(CMAKE_POLICY_DEFAULT_CMP0168 NEW)
            endif()

            https://cmake.org/cmake/help/latest/policy/CMP0075.html#policy:CMP0075

            if(POLICY CMP0075)
            cmake_policy(SET CMP0075 NEW)
            set(CMAKE_POLICY_DEFAULT_CMP0075 NEW)
            endif()

            if(QGC_USE_IWYU)
            include(IWYU)
            endif()

            #######################################################

            Qt6 Configuration

            #######################################################

            if(CMAKE_CROSSCOMPILING AND NOT IS_DIRECTORY ${QT_HOST_PATH})
            message(FATAL_ERROR "You need to set QT_HOST_PATH to cross compile Qt.")
            endif()

            find_program(QMAKE_EXECUTABLE NAMES qmake HINTS ${QT_ROOT_DIR} ${QTDIR} ENV QTDIR PATH_SUFFIXES bin)
            execute_process(COMMAND ${QMAKE_EXECUTABLE} -query QT_VERSION OUTPUT_VARIABLE QT_VERSION)
            if(QT_VERSION LESS QT_MINIMUM_VERSION)
            MESSAGE(FATAL_ERROR "Minimum supported Qt version: ${QT_MINIMUM_VERSION}.
            Installed version: ${QT_VERSION}")
            endif()

            add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x060800)

            if(CMAKE_BUILD_TYPE STREQUAL "Release")
            add_compile_definitions(
            NDEBUG
            QT_NO_DEBUG
            QT_NO_DEBUG_OUTPUT
            )
            elseif(CMAKE_BUILD_TYPE STREQUAL "Debug")
            include(CTest)
            endif()

            if(ANDROID)
            list(APPEND QT_ANDROID_MULTI_ABI_FORWARD_VARS QGC_STABLE_BUILD QT_HOST_PATH)
            endif()

            find_package(Qt6
            ${QT_MINIMUM_VERSION}
            REQUIRED
            COMPONENTS
            Concurrent
            Core
            Core5Compat
            Location
            Multimedia
            Network
            OpenGL
            Positioning
            Qml
            QmlIntegration
            Quick
            QuickControls2
            QuickWidgets
            Sensors
            Sql
            Svg
            TextToSpeech
            Widgets
            Xml
            OPTIONAL_COMPONENTS
            Bluetooth
            Charts
            LinguistTools
            MultimediaQuickPrivate
            Quick3D
            Quick3DTools
            SerialPort
            Test
            HINTS
            ${QT_LIBRARY_HINTS}
            )

            if(LINUX)
            find_package(Qt6 ${QT_MINIMUM_VERSION} COMPONENTS WaylandClient)
            endif()

            Set extra standard project setup options for Qt 6.7.0 and above

            set(EXTRA_STANDARD_PROJECT_SETUP_OPTIONS)
            if(QT_VERSION VERSION_GREATER_EQUAL 6.8.2)
            list(APPEND EXTRA_STANDARD_PROJECT_SETUP_OPTIONS I18N_SOURCE_LANGUAGE en)
            endif()

            qt_standard_project_setup(
            REQUIRES ${QGC_QT_MINIMUM_VERSION}
            SUPPORTS_UP_TO ${QGC_QT_MAXIMUM_VERSION}
            ${EXTRA_STANDARD_PROJECT_SETUP_OPTIONS}
            )

            qt_policy(
            SET QTP0001 NEW
            SET QTP0002 NEW
            SET QTP0003 NEW
            SET QTP0004 NEW
            SET QTP0005 NEW
            )

            #######################################################

            QGroundControl Options

            #######################################################

            add_compile_definitions(
            $<$<NOT:$BOOL:${QGC_STABLE_BUILD}>:QGC_DAILY_BUILD>
            $<$BOOL:${QGC_BUILD_TESTING}:QGC_UNITTEST_BUILD>
            $<$BOOL:${QGC_DEBUG_QML}:QT_QML_DEBUG>
            $<$BOOL:${QGC_DISABLE_APM_MAVLINK}:QGC_NO_ARDUPILOT_DIALECT>
            $<$BOOL:${QGC_VIEWER3D}:QGC_VIEWER3D>
            )

            if(NOT QGC_BUILD_TESTING)
            set(BUILD_TESTING OFF CACHE INTERNAL "" FORCE)
            endif()

            if("${CMAKE_OSX_ARCHITECTURES}" MATCHES "arm64;x86_64" OR "${CMAKE_OSX_ARCHITECTURES}" MATCHES "x86_64;arm64")
            set(MACOS_UNIVERSAL_BUILD ON)
            endif()

            TODO: Force building dependencies if(NOT CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL CMAKE_SYSTEM_PROCESSOR)?

            if(CMAKE_OSX_ARCHITECTURES AND NOT "${CMAKE_HOST_SYSTEM_PROCESSOR}" IN_LIST CMAKE_OSX_ARCHITECTURES)

            include(CPM)
            if(CMAKE_CROSSCOMPILING OR ANDROID OR MACOS_UNIVERSAL_BUILD)
            set(CPM_DOWNLOAD_ALL ON)
            endif()

            #######################################################

            Custom Build Configuration

            #######################################################

            if(QGC_CUSTOM_BUILD)
            add_subdirectory(custom)
            endif()

            #######################################################

            QGroundControl Resources

            #######################################################

            Note: Adding Resources to Library instead requires using Q_INIT_RESOURCE(qgcresources)

            if(NOT QGC_CUSTOM_BUILD)
            # Custom builds can override the resources
            list(APPEND QGC_RESOURCES
            ${CMAKE_SOURCE_DIR}/qgcimages.qrc
            ${CMAKE_SOURCE_DIR}/qgcresources.qrc
            ${CMAKE_SOURCE_DIR}/qgroundcontrol.qrc
            )
            endif()

            list(APPEND QGC_RESOURCES
            ${CMAKE_SOURCE_DIR}/resources/InstrumentValueIcons/InstrumentValueIcons.qrc
            ${CMAKE_SOURCE_DIR}/src/FirmwarePlugin/APM/APMResources.qrc
            ${CMAKE_SOURCE_DIR}/src/FirmwarePlugin/PX4/PX4Resources.qrc
            )

            if(QGC_UTM_ADAPTER)
            list(APPEND QGC_RESOURCES ${CMAKE_SOURCE_DIR}/src/UTMSP/utmsp.qrc)
            else()
            list(APPEND QGC_RESOURCES ${CMAKE_SOURCE_DIR}/src/UTMSP/dummy/utmsp_dummy.qrc)
            endif()

            if(QGC_BUILD_TESTING)
            list(APPEND QGC_RESOURCES ${CMAKE_SOURCE_DIR}/test/UnitTest.qrc)
            endif()

            #######################################################

            QGroundControl Target

            #######################################################

            qt_add_executable(${CMAKE_PROJECT_NAME}
            WIN32
            MACOSX_BUNDLE
            src/main.cc
            ${QGC_RESOURCES}
            )

            if(NOT ANDROID AND NOT IOS)
            target_sources(${CMAKE_PROJECT_NAME}
            PRIVATE
            src/RunGuard.cc
            src/RunGuard.h
            )
            endif()

            target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src)

            if(Qt6LinguistTools_FOUND)
            file(GLOB TS_SOURCES ${CMAKE_SOURCE_DIR}/translations/qgc_*.ts)
            set_source_files_properties(${TS_SOURCES} PROPERTIES OUTPUT_LOCATION "${CMAKE_BINARY_DIR}/i18n")
            qt_add_translations(${CMAKE_PROJECT_NAME}
            # TS_FILE_BASE ${CMAKE_PROJECT_NAME}
            # TS_FILE_DIR ${CMAKE_SOURCE_DIR}/translations/
            TS_FILES ${TS_SOURCES}
            RESOURCE_PREFIX "/"
            LUPDATE_OPTIONS -no-obsolete
            )
            endif()

            set_target_properties(${CMAKE_PROJECT_NAME}
            PROPERTIES
            QT_RESOURCE_PREFIX "/qgc"
            OUTPUT_NAME ${CMAKE_PROJECT_NAME}
            )

            if(WIN32)
            # windows installer files shared with core and custom
            set(DEPLOY_WIN_FILES
            "${CMAKE_SOURCE_DIR}/deploy/windows/driver.msi"
            "${CMAKE_SOURCE_DIR}/deploy/windows/nullsoft_installer.nsi"
            "${CMAKE_SOURCE_DIR}/deploy/windows/QGroundControl.rc"
            "${QGC_WINDOWS_INSTALL_HEADER_PATH}"
            "${QGC_WINDOWS_ICON_PATH}"
            )

            # Destination directory where files will be copied
            set(QGC_INSTALLER_SOURCE_WIN "${CMAKE_BINARY_DIR}/deploy/windows")
            file(MAKE_DIRECTORY ${QGC_INSTALLER_SOURCE_WIN})
            foreach(FILE ${DEPLOY_WIN_FILES})
                # filename without the path
                get_filename_component(FILE_NAME ${FILE} NAME)
                # re-copy the file if it changes
                add_custom_command(
                    OUTPUT "${QGC_INSTALLER_SOURCE_WIN}/${FILE_NAME}"
                    COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FILE}" "${QGC_INSTALLER_SOURCE_WIN}/${FILE_NAME}"
                    DEPENDS "${FILE}"  # Depend on the source file so that it re-copies when it changes
                )
                list(APPEND QGC_INSTALLER_SOURCE_WIN_FILES "${QGC_INSTALLER_SOURCE_WIN}/${FILE_NAME}")
            endforeach()
            
            target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${QGC_INSTALLER_SOURCE_WIN_FILES})
            set_target_properties(${CMAKE_PROJECT_NAME}
                PROPERTIES
                    WIN32_EXECUTABLE TRUE
                    QT_TARGET_RC_ICONS "${QGC_WINDOWS_ICON_PATH}"
            )
            add_compile_definitions(_USE_MATH_DEFINES)
            

            elseif(MACOS)
            set(MACOSX_BUNDLE_ICON_FILE "macx.icns")
            set(app_icon_macos "${QGC_MACOS_ICON_PATH}/macx.icns")
            set_source_files_properties(${app_icon_macos} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
            target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${app_icon_macos})
            set_target_properties(${CMAKE_PROJECT_NAME}
            PROPERTIES
            MACOSX_BUNDLE TRUE
            MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/deploy/macos/MacOSXBundleInfo.plist.in"
            MACOSX_BUNDLE_BUNDLE_NAME "${CMAKE_PROJECT_NAME}"
            MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_VERSION}"
            MACOSX_BUNDLE_COPYRIGHT "${QGC_APP_COPYRIGHT}"
            MACOSX_BUNDLE_GUI_IDENTIFIER "${QGC_BUNDLE_ID}"
            MACOSX_BUNDLE_ICON_FILE "macx.icns"
            MACOSX_BUNDLE_INFO_STRING "${QGC_APP_DESCRIPTION}"
            MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"
            MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"
            )
            elseif(IOS)
            enable_language(OBJC)

            set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "14.0")
            set(CMAKE_XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2") # iPhone,iPad
            set(CMAKE_XCODE_ATTRIBUTE_INFOPLIST_FILE "${CMAKE_CURRENT_SOURCE_DIR}/deploy/ios/iOS-Info.plist")
            
            set_target_properties(${CMAKE_PROJECT_NAME}
                PROPERTIES
                    QT_IOS_LAUNCH_SCREEN ${CMAKE_SOURCE_DIR}/deploy/ios/QGCLaunchScreen.xib
                    XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "org.mavlink.qgroundcontrol"
                    XCODE_ATTRIBUTE_PRODUCT_NAME ${CMAKE_PROJECT_NAME}
                    XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION ${CMAKE_PROJECT_VERSION}
                    XCODE_ATTRIBUTE_MARKETING_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
                    XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME "AppIcon"
                    XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "14.0"
                    XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2" # iPhone,iPad
                    XCODE_ATTRIBUTE_INFOPLIST_KEY_CFBundleDisplayName ${CMAKE_PROJECT_NAME}
                    XCODE_ATTRIBUTE_INFOPLIST_KEY_LSApplicationCategoryType "public.app-category.mycategory"
                    XCODE_ATTRIBUTE_GCC_GENERATE_DEBUGGING_SYMBOLS "YES"
            )
            
            # set(QT_NO_FFMPEG_XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY ON)
            qt_add_ios_ffmpeg_libraries(${CMAKE_PROJECT_NAME})
            

            elseif(ANDROID)
            include(CPM)
            CPMAddPackage(
            NAME android_openssl
            URL https://github.com/KDAB/android_openssl/archive/refs/heads/master.zip
            )
            include(${android_openssl_SOURCE_DIR}/android_openssl.cmake)
            add_android_openssl_libraries(${CMAKE_PROJECT_NAME})

            set(ANDROID_PLATFORM_ARCHITECTURE_CODE)
            if(${ANDROID_ABI} STREQUAL "armeabi-v7a")
                set(ANDROID_PLATFORM_ARCHITECTURE_CODE "032")
            elseif(${ANDROID_ABI} STREQUAL "arm64-v8a")
                set(ANDROID_PLATFORM_ARCHITECTURE_CODE "064")
            elseif(${ANDROID_ABI} STREQUAL "x86")
                set(ANDROID_PLATFORM_ARCHITECTURE_CODE "132")
            elseif(${ANDROID_ABI} STREQUAL "x86_64")
                set(ANDROID_PLATFORM_ARCHITECTURE_CODE "164")
            endif()
            set(ANDROID_VERSION_CODE "${ANDROID_PLATFORM_ARCHITECTURE_CODE}${PROJECT_VERSION_MAJOR}${PROJECT_VERSION_MINOR}")
            
            set_target_properties(${CMAKE_PROJECT_NAME}
                PROPERTIES
                    # QT_ANDROID_ABIS ${ANDROID_ABI}
                    QT_ANDROID_MIN_SDK_VERSION ${QGC_QT_ANDROID_MIN_SDK_VERSION}
                    QT_ANDROID_TARGET_SDK_VERSION ${QGC_QT_ANDROID_TARGET_SDK_VERSION}
                    QT_ANDROID_PACKAGE_NAME "${QGC_ANDROID_PACKAGE_NAME}"
                    QT_ANDROID_PACKAGE_SOURCE_DIR "${QGC_ANDROID_PACKAGE_SOURCE_DIR}"
                    QT_ANDROID_VERSION_NAME ${CMAKE_PROJECT_VERSION}
                    QT_ANDROID_VERSION_CODE ${ANDROID_VERSION_CODE}
                    QT_QML_ROOT_PATH ${CMAKE_SOURCE_DIR}
                    # QT_ANDROID_SDK_BUILD_TOOLS_REVISION
                    # QT_ANDROID_SYSTEM_LIBS_PREFIX
            )
            

            endif()

            add_compile_definitions(
            QGC_APP_NAME="${QGC_APP_NAME}"
            QGC_ORG_NAME="${QGC_ORG_NAME}"
            QGC_ORG_DOMAIN="${QGC_ORG_DOMAIN}"
            QGC_APP_VERSION_STR="${QGC_APP_VERSION_STR}"
            QGC_SETTINGS_VERSION=${QGC_SETTINGS_VERSION}
            )

            add_subdirectory(src)

            target_link_libraries(${CMAKE_PROJECT_NAME}
            PRIVATE
            Qt6::Core
            Qt6::Core5Compat
            Qt6::Quick
            Qt6::Svg
            Qt6::Widgets
            QGC
            QmlControls

            )

            target_link_libraries(QGroundControl
            PUBLIC
            -ljpeg
            -lpng
            )

            if(ANDROID)
            # Find JPEG library in NDK sysroot, Qt paths, or project paths
            find_library(JPEG_LIBRARY jpeg
            PATHS
            ${ANDROID_NDK}/sysroot/usr/lib/${ANDROID_ABI} # NDK sysroot for the ABI
            ${ANDROID_NDK}/platforms/android-${QGC_QT_ANDROID_MIN_SDK_VERSION}/arch-arm64/usr/lib # Alternative NDK path
            ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI} # Project-specific libraries
            ${QT_LIBRARY_DIR} # Qt library directory (if applicable)
            NO_DEFAULT_PATH # Restrict to these paths only
            )

            # Find PNG library (you’ll need to do the same for PNG if it’s missing)
            find_library(PNG_LIBRARY png
                PATHS
                    ${ANDROID_NDK}/sysroot/usr/lib/${ANDROID_ABI}
                    ${ANDROID_NDK}/platforms/android-${QGC_QT_ANDROID_MIN_SDK_VERSION}/arch-arm64/usr/lib
                    ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}
                    ${QT_LIBRARY_DIR}
                NO_DEFAULT_PATH
            )
            
            # Check if libraries are found
            if(NOT JPEG_LIBRARY)
                message(WARNING "JPEG library not found. Ensure libjpeg is available for ${ANDROID_ABI}. Attempting to proceed without it.")
                # Optionally, you can specify a fallback path or disable linking if not critical
                # set(JPEG_LIBRARY "")  # Comment out or handle gracefully
            endif()
            if(NOT PNG_LIBRARY)
                message(WARNING "PNG library not found. Ensure libpng is available for ${ANDROID_ABI}. Attempting to proceed without it.")
                # set(PNG_LIBRARY "")  # Comment out or handle gracefully
            endif()
            
            # Link the libraries (only if found)
            if(JPEG_LIBRARY)
                target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ${JPEG_LIBRARY})
            endif()
            if(PNG_LIBRARY)
                target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ${PNG_LIBRARY})
            endif()
            
            # Continue with other Android-specific configurations
            target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/android/src/AndroidInit.cc)
            target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/android/src)
            
            target_link_libraries(${CMAKE_PROJECT_NAME}
                PRIVATE
                    Qt6::Core
                    Joystick
                    Utilities
            )
            
            if(NOT QGC_NO_SERIAL_LINK)
                target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE Comms)
            endif()
            

            endif()
            #target_link_libraries(QGroundControl PRIVATE C:/libpng/build/libpng.a)

            if(QGC_BUILD_TESTING)
            add_subdirectory(test)
            target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE qgctest)
            endif()

            if(ANDROID)
            target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/android/src/AndroidInit.cc)

            target_link_libraries(${CMAKE_PROJECT_NAME}
                PRIVATE
                    Qt6::Core
                    Joystick
                    Utilities
            )
            
            target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/android/src)
            
            if(NOT QGC_NO_SERIAL_LINK)
                target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE Comms)
            endif()
            

            endif()

            qt_import_plugins(${CMAKE_PROJECT_NAME}
            INCLUDE Qt6::QSvgPlugin
            EXCLUDE_BY_TYPE geoservices
            INCLUDE_BY_TYPE sqldrivers Qt6::QSQLiteDriverPlugin
            )

            include(Install)

            include(PrintSummary)

            jsulmJ Offline
            jsulmJ Offline
            jsulm
            Lifetime Qt Champion
            wrote on last edited by
            #6

            @InsideFPV said in QGCS error for Android:

            target_link_libraries(QGroundControl
            PUBLIC
            -ljpeg
            -lpng
            )

            Yes, you're linking libpng.
            Was libpng found when running cmake?
            Where is libpng for Android located?

            https://forum.qt.io/topic/113070/qt-code-of-conduct

            I 1 Reply Last reply
            0
            • jsulmJ jsulm

              @InsideFPV said in QGCS error for Android:

              target_link_libraries(QGroundControl
              PUBLIC
              -ljpeg
              -lpng
              )

              Yes, you're linking libpng.
              Was libpng found when running cmake?
              Where is libpng for Android located?

              I Offline
              I Offline
              InsideFPV
              wrote on last edited by
              #7

              @jsulm i am adding only this code porting inside my cmake file.
              target_link_libraries(QGroundControl
              PUBLIC
              -ljpeg
              -lpng
              )

              I am getting gstreamer error and i ask chatgpt and it provide me this solution.
              As form your questing i understand i have to add libpng in my project but i didnt added that till now.(Am i right...?)
              please guide me how can i resolve it...?

              jsulmJ 1 Reply Last reply
              0
              • I InsideFPV

                @jsulm i am adding only this code porting inside my cmake file.
                target_link_libraries(QGroundControl
                PUBLIC
                -ljpeg
                -lpng
                )

                I am getting gstreamer error and i ask chatgpt and it provide me this solution.
                As form your questing i understand i have to add libpng in my project but i didnt added that till now.(Am i right...?)
                please guide me how can i resolve it...?

                jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by
                #8

                @InsideFPV said in QGCS error for Android:

                i have to add libpng in my project but i didnt added that till now

                You DID add it already! Just look at your CMakeLists.txt file.
                I repeat the questions you did not answer:
                Was libpng found when running cmake?
                Where is libpng for Android located?

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                I 1 Reply Last reply
                0
                • jsulmJ jsulm

                  @InsideFPV said in QGCS error for Android:

                  i have to add libpng in my project but i didnt added that till now

                  You DID add it already! Just look at your CMakeLists.txt file.
                  I repeat the questions you did not answer:
                  Was libpng found when running cmake?
                  Where is libpng for Android located?

                  I Offline
                  I Offline
                  InsideFPV
                  wrote on last edited by InsideFPV
                  #9

                  @jsulm No libpng was not found while running cmake.
                  and it is not presend in this location:
                  "C:/Users/Software/AppData/Local/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android"

                  where will i get libpng ?

                  jsulmJ 1 Reply Last reply
                  0
                  • I InsideFPV

                    @jsulm No libpng was not found while running cmake.
                    and it is not presend in this location:
                    "C:/Users/Software/AppData/Local/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android"

                    where will i get libpng ?

                    jsulmJ Offline
                    jsulmJ Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on last edited by
                    #10

                    @InsideFPV If Android NDK does not provide it you will have to build it by yourself from source.

                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                    I 2 Replies Last reply
                    0
                    • jsulmJ jsulm

                      @InsideFPV If Android NDK does not provide it you will have to build it by yourself from source.

                      I Offline
                      I Offline
                      InsideFPV
                      wrote on last edited by
                      #11

                      @jsulm As i am using master clone.
                      As this is my first time doing I am struggling with steps. Can you guide me how to build it..?

                      1 Reply Last reply
                      0
                      • jsulmJ jsulm

                        @InsideFPV If Android NDK does not provide it you will have to build it by yourself from source.

                        I Offline
                        I Offline
                        InsideFPV
                        wrote on last edited by
                        #12

                        @jsulm hello sir please guide me how to build lpng file ?

                        jsulmJ 1 Reply Last reply
                        0
                        • I InsideFPV

                          @jsulm hello sir please guide me how to build lpng file ?

                          jsulmJ Offline
                          jsulmJ Offline
                          jsulm
                          Lifetime Qt Champion
                          wrote on last edited by
                          #13

                          @InsideFPV Take a look at https://github.com/julienr/libpng-android
                          Official description how to build: https://github.com/pnggroup/libpng/blob/libpng16/INSTALL

                          https://forum.qt.io/topic/113070/qt-code-of-conduct

                          I 1 Reply Last reply
                          0
                          • jsulmJ jsulm

                            @InsideFPV Take a look at https://github.com/julienr/libpng-android
                            Official description how to build: https://github.com/pnggroup/libpng/blob/libpng16/INSTALL

                            I Offline
                            I Offline
                            InsideFPV
                            wrote on last edited by
                            #14

                            @jsulm sir i am adding libpng.so and libpng.a on my ndk path that is below
                            C:\Users\Software\AppData\Local\Android\Sdk\ndk\26.1.10909125\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\aarch64-linux-android

                            but still getting error
                            Capture21.PNG Capture22.PNG Capture23.PNG

                            1 Reply Last reply
                            0
                            • jsulmJ Offline
                              jsulmJ Offline
                              jsulm
                              Lifetime Qt Champion
                              wrote on last edited by
                              #15

                              You're missing libjpeg library now. Install it.

                              https://forum.qt.io/topic/113070/qt-code-of-conduct

                              I 1 Reply Last reply
                              0
                              • jsulmJ jsulm

                                You're missing libjpeg library now. Install it.

                                I Offline
                                I Offline
                                InsideFPV
                                wrote on last edited by
                                #16

                                @jsulm where to find or build this library ?

                                jsulmJ 1 Reply Last reply
                                0
                                • I InsideFPV

                                  @jsulm where to find or build this library ?

                                  jsulmJ Offline
                                  jsulmJ Offline
                                  jsulm
                                  Lifetime Qt Champion
                                  wrote on last edited by
                                  #17

                                  @InsideFPV https://www.ijg.org/files/

                                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                                  I 2 Replies Last reply
                                  0
                                  • jsulmJ jsulm

                                    @InsideFPV https://www.ijg.org/files/

                                    I Offline
                                    I Offline
                                    InsideFPV
                                    wrote on last edited by
                                    #18

                                    @jsulm yes sir I am build this library but getting another error ..

                                    Capture24.PNG Capture25.PNG

                                    1 Reply Last reply
                                    0
                                    • jsulmJ jsulm

                                      @InsideFPV https://www.ijg.org/files/

                                      I Offline
                                      I Offline
                                      InsideFPV
                                      wrote on last edited by
                                      #19

                                      @jsulm hello sir
                                      please guide me for above error

                                      jsulmJ 1 Reply Last reply
                                      0
                                      • I InsideFPV

                                        @jsulm hello sir
                                        please guide me for above error

                                        jsulmJ Offline
                                        jsulmJ Offline
                                        jsulm
                                        Lifetime Qt Champion
                                        wrote on last edited by
                                        #20

                                        @InsideFPV Maybe you should ask QGCS project? It is not part of Qt...

                                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                                        I 1 Reply Last reply
                                        0
                                        • jsulmJ jsulm

                                          @InsideFPV Maybe you should ask QGCS project? It is not part of Qt...

                                          I Offline
                                          I Offline
                                          InsideFPV
                                          wrote on last edited by
                                          #21

                                          @jsulm yes sir I am asking about QGCS project
                                          please help me for this

                                          1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved