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. Android/iOS CMake build errors
Forum Updated to NodeBB v4.3 + New Features

Android/iOS CMake build errors

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
1 Posts 1 Posters 226 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.
  • A Offline
    A Offline
    Antonio Ortiz
    wrote on 20 Nov 2022, 20:15 last edited by
    #1

    I'm working on a subdir project using Qt6 and CMake. The project folder consists of two apps and three shared libraries, everything runs fine on macos, but when I try to build for Android or iOS, but I got errors and I don't know how to fix muy CMake files. I'm new using CMake.

    For Android I got this

    No target architecture defined in json file.
    

    For iOS I got this when

    Undefined symbols for architecture x86_64:
      "_main", referenced from:
          user_main_trampoline() in libqios_debug.a(qioseventdispatcher.mm.o)
         (maybe you meant: _qt_main_wrapper, _jinit_c_main_controller , _jinit_d_main_controller )
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    
    ** BUILD FAILED **
    

    This is my project's tree:
    10a110c4-3ba5-41e0-9ce0-b3bdb9e108f5-imagen.png

    These are my CMake files:

    Project's CMakeLists.txt:

    cmake_minimum_required(VERSION 3.22)
    
    project(DisinglabShoppu VERSION 1.0 LANGUAGES CXX)
    
    add_subdirectory(admin)
    add_subdirectory(client)
    add_subdirectory(utils)
    add_subdirectory(shoppumodel)
    add_subdirectory(restclient)
    

    Admin's CMakeLists.txt:

    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTORCC ON)
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
    find_package(
        Qt6
        COMPONENTS
        Quick
        Core
    #    Mqtt
        REQUIRED
    )
    
    #qt_add_resources(${CMAKE_CURRENT_LIST_DIR}/qml.qrc)
    
    set(QML_RESOURCES
        ${CMAKE_CURRENT_LIST_DIR}/qml.qrc
    )
    
    set (QML_FILES
        main.qml
        views/login.qml
        views/mainMenu.qml
        views/createCategory.qml
        views/createProduct.qml
        views/listEditCategory.qml
        views/editProduct.qml
        views/orders.qml
        views/createExtra.qml
        views/editExtra.qml
        views/listEditExtras.qml
        views/listEditProducts.qml
        views/editCategory.qml
        views/store.qml
        views/orderDetail.qml
        views/transferInfoList.qml
        views/transferInfo.qml
        views/pagomovilList.qml
        views/pagomovil.qml
        views/tax.qml
        views/shippingCharge.qml
        views/components/CategoryForm.qml
        views/components/ExtraForm.qml
        views/components/ProductForm.qml
        controllers/loginController.js
        controllers/progressbarController.js
        controllers/creationController.js
        controllers/retriveController.js
        controllers/viewsController.js
    )
    
    set( RESOURCE_FILES
        qtquickcontrols2.conf
        resources/background.jpg
        resources/logo.png
        resources/icons/lock.svg
        resources/icons/person.svg
        resources/icons/visibility.svg
        resources/icons/visibility_off.svg
        resources/icons/chevron_left.svg
        resources/icons/chevron_right.svg
        resources/icons/back.svg
        resources/icons/edit.svg
        resources/icons/menu.svg
        resources/icons/remove.svg
        resources/icons/shoppingcart.svg
        resources/notification/notification.wav
        resources/samples/calib3d.jpg
        resources/samples/core.jpg
        resources/samples/feature2D.jpg
        resources/samples/ml.jpg
        resources/samples/objdetect.jpg
        resources/samples/retina.jpg
    )
    
    set(
        SOURCES
        ${CMAKE_CURRENT_LIST_DIR}/main.cpp
        ${CMAKE_CURRENT_LIST_DIR}/src/androidgallery.cpp
    )
    
    set(
        HEADERS
        ${CMAKE_CURRENT_LIST_DIR}/include/androidgallery.h
    )
    
    set(
        ANDROID_FILES
        ${CMAKE_CURRENT_LIST_DIR}/android/AndroidManifest.xml
        ${CMAKE_CURRENT_LIST_DIR}/android/src/ve/com/disinglab/shoppuAdmin/MyBraodcastReceiver.java
        ${CMAKE_CURRENT_LIST_DIR}/android/src/ve/com/disinglab/shoppuAdmin/NotificationService.java
    )
    
    if(ANDROID)
        qt_add_library(admin SHARED
            ${QML_RESOURCES}
            ${SOURCES}
            ${HEADERS}
            ${ANDROID_FILES}
             )
    
    else()
        qt_add_executable(admin
            ${QML_RESOURCES}
            ${SOURCES}
            ${HEADERS}
        )
    endif()
    
    
    target_include_directories(admin
        PUBLIC
        ../restclient
        ../utils
        ../shoppumodel
    )
    
    #qt_import_plugins(admin INCLUDE shoppumodel)
    
    target_link_libraries(admin
        PRIVATE
        rest-client
        utils
        shoppumodel
        Qt6::Quick
        Qt6::Core
        Qt6::Gui
        Qt6::Qml
    #    Qt6::Mqtt
        Qt6::CorePrivate
    )
    
    #set_target_properties(admin PROPERTIES
    #    MACOSX_BUNDLE_GUI_IDENTIFIER shoppu.com
    #    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    #    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    #)
    

    Client's CMakeLists.txt:

    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTORCC ON)
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
    
    find_package( Qt6
        COMPONENTS
        REQUIRED
        Quick
        Core
        Qml
        Gui
        WebView
    #    Mqtt
    )
    
    qt_add_resources(${CMAKE_CURRENT_LIST_DIR}/qml.qrc)
    
    set(PROJECT_VERSION 1.1)
    set(PROJECT_VERSION_MAJOR 1)
    set(PROJECT_VERSION_MINOR 1)
    
    set(
        QML_RESOURCES
        ${CMAKE_CURRENT_LIST_DIR}/qml.qrc
    )
    
    set(
        SOURCES
        ${CMAKE_CURRENT_LIST_DIR}/main.cpp
        ${CMAKE_CURRENT_LIST_DIR}/src/androidgallery.cpp
    )
    
    set(
        HEADERS
        ${CMAKE_CURRENT_LIST_DIR}/include/androidgallery.h
    )
    
    set(
        TRANSLATION
        ${CMAKE_CURRENT_LIST_DIR}/translations/Shoppu_es_us.ts
        ${CMAKE_CURRENT_LIST_DIR}/translations/Shoppu_es_VE.ts
        ${CMAKE_CURRENT_LIST_DIR}/translations/Shoppu.ts
    )
    
    if(ANDROID)
        set(
            ANDROID_FILES
            ${CMAKE_CURRENT_LIST_DIR}/android/AndroidManifest.xml
    #        ${CMAKE_CURRENT_LIST_DIR}/android/src/ve/com/disinglab/shoppuAdmin/MyBraodcastReceiver.java
    #        ${CMAKE_CURRENT_LIST_DIR}/android/src/ve/com/disinglab/shoppuAdmin/NotificationService.java
        )
        add_library(client SHARED
            ${QML_RESOURCES}
            ${SOURCES}
            ${HEADERS}
            ${ANDROID_FILES})
        set(ANDROID_MIN_SDK_VERSION 32)
    #    set_property(TARGET admin PROPERTY ANDROID_ABIS "arm64-v8a;armeabi-v7a")
        set(ANDROID_PACKAGE_SOURCE_DIR ${PROJECT_SOURCE_DIR}/android CACHE INTERNAL "")
    
    else()
        qt_add_executable(client
            ${QML_RESOURCES}
            ${SOURCES}
            ${HEADERS}
        )
    endif()
    
    #qt_add_translations(client
    #    TS_FILES
    #    ${TRANSLATION}
    #)
    
    target_include_directories(client
        PUBLIC
        ../restclient
        ../utils
        ../shoppumodel
    )
    
    target_link_libraries(client
        PRIVATE
        rest-client
        utils
        shoppumodel
        Qt6::Quick
        Qt6::Core
        Qt6::Gui
        Qt6::Qml
        Qt6::WebView
        Qt6::CorePrivate
    #    Qt6::Mqtt
    )
    

    RestClient's CMakeLists.txt:

    set(CMAKE_AUTOMOC ON)
    
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
    find_package(
        Qt6 6.5
        COMPONENTS
        Core
        Network
        Quick
        REQUIRED
    )
    
    set(
        SOURCES
        ${CMAKE_CURRENT_SOURCE_DIR}/src/restclient.cpp
    )
    
    set(
        HEADERS
        ${CMAKE_CURRENT_SOURCE_DIR}/include/restclient.h
        ${CMAKE_CURRENT_SOURCE_DIR}/include/restclient_global.h
    )
    
    add_library(rest-client
        ${SOURCES}
        ${HEADERS}
    )
    
    target_link_libraries(rest-client
        PRIVATE
        Qt6::Core
        Qt6::Network
        Qt6::Qml
    )
    
    target_include_directories(rest-client PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
    

    Shoppumodel's CMakeLists.txt:

    set(PLUGIN_NAME ShoppuModels)
    set(PLUGIN_NAME SHOPPUMODEL)
    
    
    set(CMAKE_AUTOMOC ON)
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
    find_package(
        Qt6
        COMPONENTS
        Core
        Network
        Quick
        REQUIRED
    )
    
    set(
            SOURCES
            ${CMAKE_CURRENT_LIST_DIR}/src/shoppumodelplugin.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/billinginfo.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/billinginfolist.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/cartproduct.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/category.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/categorylist.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/extra.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/extralist.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/image.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/order.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/orderedproduct.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/orderedproductlist.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/orderlist.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/pagomovilinfo.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/pagomovilinfolist.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/paymentinfo.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/product.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/productlist.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/shipmentinfo.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/shipmentinfolist.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/shippingcharge.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/shoppingcart.cpp
    #        ${CMAKE_CURRENT_LIST_DIR}/src/shoppumodel.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/store.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/storebank.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/storebanklist.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/tax.cpp
            ${CMAKE_CURRENT_LIST_DIR}/src/user.cpp
    
    )
    
    set(
            HEADERS
            ${CMAKE_CURRENT_LIST_DIR}/include/shoppumodelplugin.h
            ${CMAKE_CURRENT_LIST_DIR}/include/billinginfo.h
            ${CMAKE_CURRENT_LIST_DIR}/include/billinginfolist.h
            ${CMAKE_CURRENT_LIST_DIR}/include/cartproduct.h
            ${CMAKE_CURRENT_LIST_DIR}/include/category.h
            ${CMAKE_CURRENT_LIST_DIR}/include/categorylist.h
            ${CMAKE_CURRENT_LIST_DIR}/include/extra.h
            ${CMAKE_CURRENT_LIST_DIR}/include/extralist.h
            ${CMAKE_CURRENT_LIST_DIR}/include/image.h
            ${CMAKE_CURRENT_LIST_DIR}/include/order.h
            ${CMAKE_CURRENT_LIST_DIR}/include/orderedproduct.h
            ${CMAKE_CURRENT_LIST_DIR}/include/orderedproductlist.h
            ${CMAKE_CURRENT_LIST_DIR}/include/orderlist.h
            ${CMAKE_CURRENT_LIST_DIR}/include/pagomovilinfo.h
            ${CMAKE_CURRENT_LIST_DIR}/include/pagomovilinfolist.h
            ${CMAKE_CURRENT_LIST_DIR}/include/paymentinfo.h
            ${CMAKE_CURRENT_LIST_DIR}/include/product.h
            ${CMAKE_CURRENT_LIST_DIR}/include/productlist.h
            ${CMAKE_CURRENT_LIST_DIR}/include/shipmentinfo.h
            ${CMAKE_CURRENT_LIST_DIR}/include/shipmentinfolist.h
            ${CMAKE_CURRENT_LIST_DIR}/include/shippingcharge.h
    #        ${CMAKE_CURRENT_LIST_DIR}/include/shoppumodel.h
    #        ${CMAKE_CURRENT_LIST_DIR}/include/shoppumodel_global.h
            ${CMAKE_CURRENT_LIST_DIR}/include/shoppingcart.h
            ${CMAKE_CURRENT_LIST_DIR}/include/shoppumodel.h
            ${CMAKE_CURRENT_LIST_DIR}/include/store.h
            ${CMAKE_CURRENT_LIST_DIR}/include/storebank.h
            ${CMAKE_CURRENT_LIST_DIR}/include/storebanklist.h
            ${CMAKE_CURRENT_LIST_DIR}/include/tax.h
            ${CMAKE_CURRENT_LIST_DIR}/include/user.h
    )
    
    set(
        QML_RESOURCES
        ${CMAKE_CURRENT_LIST_DIR}/qmldir
        ${CMAKE_CURRENT_LIST_DIR}/qml.qrc
    )
    
    add_library(shoppumodel
                SHARED
                ${SOURCES}
                ${HEADERS}
                ${QML_RESOURCES}
    )
    
    
    #qt_add_qml_module(shoppumodel
    #    URI shoppumodel
    #    VERSION 1.0
    #    QML_FILES ${QML_RESOURCES}
    #    SOURCES ${SOURCES} ${HEADERS}
    #)
    
    target_include_directories(shoppumodel
        PUBLIC
        ../restclient
        ../utils
    )
    
    target_link_libraries(shoppumodel
        PRIVATE
        utils
        rest-client
        Qt6::Core
        Qt6::Network
        Qt6::Qml
    )
    
    target_include_directories(shoppumodel PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
    
    #qt_add_qml_module(shoppumodel
    #    URI ShoppuModel
    #    VERSION 1.0
    #    SOURCES ${SOURCES} ${HEADERS} ${QML_RESOURCES}
    #    RESOURCE_PREFIX /ShoppuModel
    #)
    
    add_custom_command(
        TARGET shoppumodel
        POST_BUILD
        COMMAND
            ${CMAKE_COMMAND} -E copy
            ${CMAKE_CURRENT_LIST_DIR}/qmldir
            $<TARGET_FILE_DIR:shoppumodel>/qmldir
    )
    

    Utils' CMakeLists.txt:

    set(CMAKE_AUTOMOC ON)
    
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
    find_package(
        Qt6 6.4
        COMPONENTS
        Core
        Network
    #    Mqtt
        REQUIRED
    )
    
    set(
        SOURCES
        ${CMAKE_CURRENT_LIST_DIR}/src/application.cpp
        ${CMAKE_CURRENT_LIST_DIR}/src/endpoints.cpp
    #    ${CMAKE_CURRENT_LIST_DIR}/src/qmlmqttclient.cpp
        ${CMAKE_CURRENT_LIST_DIR}/src/restconnector.cpp
    #    ${CMAKE_CURRENT_LIST_DIR}/src/utils.cpp
    )
    
    set(
        HEADERS
        ${CMAKE_CURRENT_LIST_DIR}/include/application.h
        ${CMAKE_CURRENT_LIST_DIR}/include/endpoints.h
    #    ${CMAKE_CURRENT_LIST_DIR}/include/qmlmqttclient.h
        ${CMAKE_CURRENT_LIST_DIR}/include/restconnector.h
    #    ${CMAKE_CURRENT_LIST_DIR}/include/utils.h
    #    ${CMAKE_CURRENT_LIST_DIR}/include/utils_global.h
    )
    
    
    add_library(utils
        ${SOURCES}
        ${HEADERS}
    )
    
    
    target_include_directories(utils
        PUBLIC
        ../restclient
    )
    
    target_link_libraries(utils
        PRIVATE
        rest-client
        Qt6::Core
        Qt6::Network
    #    Qt6::Mqtt
    )
    
    target_include_directories(utils PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
    
    1 Reply Last reply
    0

    1/1

    20 Nov 2022, 20:15

    • Login

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