Hello experts, currently trying to move from qmake to cmake. Starting point in my Framework was using qmake2cmake tool. This generated a bunch of heavy cmake files, stripped them down and got it working that my integrated internal libs are building on windows. I have managed to get building and running working under MSVC. Now I stuck with Android, my libraries and UI components in applets are building, also the final shared lib for EuroSoft_live is building but build process stops with following error: 👎 Fehler: Cannot find application binary in build dir D:/Projects/QtEuroSoftProjectQt6/build/Android_Qt_5_15_10_Clang_Multi_Abi-Debug/android-build//libs/armeabi-v7a/libEuroSoftProject_armeabi-v7a.so<https://v7a.so/>.
Project structure: EuroSoftProject CMakeLists.txt - applications CMakeLists.txt - EuroSoft_live CMakeLists.txt - applets - libraries .. Why does the compiler search for libEuroSoftProject... and not for libEuroSoft_live...? When i remove the project tag from root CMakeLists.txt it searches for libProject... The final libEuroSoft_live is already exisiting in build-dir/android-build/libs/armeabi-v7a/... Do you have any advice for me? Regards Michael SYSTRONIK Elektronik u. Systemtechnik GmbH, Gewerbestr. 57, D-88636 Illmensee Registergericht Ulm - HRB 710423, Sitz der Gesellschaft Illmensee, USt-IdNr. DE 811 264 405 Geschäftsführer: Dipl.-VW Elmar Fritz, Ing. Ramon J. van Tuijl, Dipl.-Ing. (FH) Richard Skoberla Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder die E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und löschen Sie die E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe der E-Mail ist nicht gestattet. This e-mail may contain confidential and / or privileged information. If you are not the intended recipient or the e-mail may contain error, inform you immediately ask the sender and delete the e-mail. Unauthorized copying, unauthorized disclosure of e-mail is strictly forbidden.
cmake_minimum_required(VERSION 3.16) set(APPLICATION_COPYRIGHT "2015-2022") set(APPLICATION_NAME "EuroSoft live") set(ORGANIZATION_DOMAIN "www.systronik.com") set(ORGANIZATION_NAME "Systronik") set(APPLICATION_VERSION 2.11.0) include(${CMAKE_CURRENT_SOURCE_DIR}/../../global_conf.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/../../global_functions.cmake) project(EuroSoft_live VERSION ${APPLICATION_VERSION} LANGUAGES CXX) # Set up AUTOMOC and some sensible defaults for runtime execution # When using Qt 6.3, you can replace the code block below with # qt_standard_project_setup() set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(QT NAMES Qt5 Qt6 COMPONENTS Core REQUIRED) find_package(Qt5 COMPONENTS Bluetooth Charts Concurrent Gui Multimedia Network Qml Quick Script Sql WebSockets WebChannel Widgets Xml REQUIRED) if(ANDROID) find_package(Qt5 COMPONENTS AndroidExtras PrintSupport REQUIRED) endif() if(MSVC OR MACOS) find_package(Qt5 COMPONENTS SerialPort PrintSupport REQUIRED) endif() # Resources: file (GLOB_RECURSE 3rdarty_headers CONFIGURE_DEPENDS "../../libraries/3rdparty/*.h") set (3rdparty_includeDirs "") foreach (_headerFile ${3rdarty_headers}) get_filename_component(_dir ${_headerFile} PATH) list (APPEND EuroSoftUi_includeDirs ${_dir}) endforeach() list (REMOVE_DUPLICATES 3rdparty_includeDirs) include_directories( .. ${3rdparty_includeDirs} ../../libraries/EuroSoft/.. ../../libraries/EuroSoftUi/.. ) set(EuroSoft_live_src ../../libraries/EuroSoftUi/supporting/ComponentInitializer.cpp ../../libraries/EuroSoftUi/supporting/ComponentInitializer.h EuroSoftLiveController.cpp EuroSoftLiveController.h EuroSoftLiveViewQml.cpp EuroSoftLiveViewQml.h main.cpp ) set(EuroSoft_live_rc EuroSoft_live.qrc ../../libraries/EuroSoft/EuroSoft.qrc ../../libraries/EuroSoftUi/EuroSoftUi.qrc ../../libraries/EuroSoftUi/EuroSoftUi_resources.qrc ../../applets/measurement/measurement.qrc ../../applets/settings/settings.qrc ../../libraries/3rdparty/3rdparty.qrc ../../textdata/ApplicationMetaData/EuroSoftProject_metadata.qrc ../../translations/compiled/EuroSoftProject_translations.qrc ../../translations/compiled/qtbase_translations.qrc ../../translations/compiled/qtconnectivity_translations.qrc ../../translations/compiled/qtquickcontrols_translations.qrc ) if(MSVC) set(EuroSoft_live_rc ${EuroSoft_live_rc} ../../libraries/EuroSoft/loggerconfig/supporting/images/CapbsSensIcons.qrc ) enable_language("RC") add_executable(${PROJECT_NAME} WIN32 ${EuroSoft_live_src} ${EuroSoft_live_rc} ${CMAKE_CURRENT_SOURCE_DIR}/windows/icon.rc ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/EuroSoft/Win10Compatibility.manifest ) elseif(ANDROID) set(ANDROID_MIN_SDK_VERSION CACHE INTERNAL 23) set(ANDROID_PACKAGE_SOURCE_DIR ${PROJECT_SOURCE_DIR}/android CACHE INTERNAL "") set(QT_ANDROID_BUILD_ALL_ABIS CACHE INTERNAL ON) set(QT_ANDROID_APP_NAME CACHE INTERNAL "${APPLICATION_NAME}") set(QT_ANDROID_APP_VERSION CACHE INTERNAL "${APPLICATION_VERSION}") set(QT_ANDROID_APP_VERSION_CODE CACHE INTERNAL 123456) set(QT_ANDROID_APPLICATION_BINARY CACHE INTERNAL "EuroSoft_live") file(GLOB_RECURSE ANDROID_SOURCES ${QT_ANDROID_PACKAGE_SOURCE_DIR}/AndroidManifest.xml ${QT_ANDROID_PACKAGE_SOURCE_DIR}/build.gradle ${QT_ANDROID_PACKAGE_SOURCE_DIR}/gradle.properties ${QT_ANDROID_PACKAGE_SOURCE_DIR}/gradle/wrapper/gradle-wrapper.jar ${QT_ANDROID_PACKAGE_SOURCE_DIR}/gradle/wrapper/gradle-wrapper.properties ${QT_ANDROID_PACKAGE_SOURCE_DIR}/gradlew ${QT_ANDROID_PACKAGE_SOURCE_DIR}/res/values/libs.xml ${QT_ANDROID_PACKAGE_SOURCE_DIR}/src/*.java ) add_library(${PROJECT_NAME} SHARED ${EuroSoft_live_src} ${EuroSoft_live_rc} ${ANDROID_SOURCES}) if(QT_ANDROID_BUILD_ALL_ABIS) set_target_properties(${PROJECT_NAME} PROPERTIES ANDROID_ABIS "armeabi-v7a;arm64-v8a") endif() add_custom_command( TARGET ${PROJECT_NAME} PRE_LINK COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/EuroSoft/nativetools/platforms/android ${CMAKE_CURRENT_SOURCE_DIR}/android/src/com/systronik/platforms/android) # set(COPY_TO_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/libEuroSoftProject_${ANDROID_ABI}.so) # add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD # COMMAND ${CMAKE_COMMAND} -E copy # $<TARGET_FILE:${PROJECT_NAME}> # ${COPY_TO_PATH} # COMMENT "Copying '${PROJECT_NAME}' library to '${COPY_TO_PATH}'") #set(COPY_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/../../android-build/libs/${ANDROID_ABI}) set(COPY_PATH ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${COPY_PATH}/lib${PROJECT_NAME}_${ANDROID_ABI}.so ${COPY_PATH}/libEuroSoftProject_${ANDROID_ABI}.so ) else() add_executable(${PROJECT_NAME} WIN32 MACOSX_BUNDLE EuroSoft_live_src EuroSoft_live_rc) endif() target_include_directories(${PROJECT_NAME} PRIVATE ../../applets/measurement/.. ../../applets/settings/.. ${3rdparty_includeDirs} ../../libraries/EuroSoft/.. ../../libraries/EuroSoftUi/.. ) target_compile_definitions(${PROJECT_NAME} PRIVATE DISABLE_LIBRARY_FEATURES EXTERNAL_COMPILER NCREPORT_IMPORT NCREPORT_NO_QPRINTER QT_DISABLE_DEPRECATED_BEFORE=0x050F00 APPLICATION_COPYRIGHT="2015-2022" APPLICATION_NAME="EuroSoft live" ORGANIZATION_DOMAIN="www.systronik.com" ORGANIZATION_NAME="Systronik" APPLICATION_VERSION="2.11.0" ) if(${build_lib_measurementApplets}) target_compile_definitions(${PROJECT_NAME} PUBLIC ENABLE_MEASUREMENT_APPLETS ) endif() target_link_libraries(${PROJECT_NAME} PRIVATE Qt::Bluetooth Qt::Charts Qt::Concurrent Qt::Core Qt::Gui Qt::Multimedia Qt::Network Qt::Qml Qt::Quick Qt::Script Qt::Sql Qt::WebSockets Qt::Widgets Qt::Xml ) if(CMAKE_BUILD_TYPE STREQUAL Release) target_compile_definitions(${PROJECT_NAME} PRIVATE QT_NO_DEBUG_OUTPUT ) endif() if(NOT MACOS) set_target_properties(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE FALSE ) endif() if(MSVC) target_compile_definitions(${PROJECT_NAME} PRIVATE BUILD_DLL QCUSTOMPLOT_USE_OPENGL MP ) target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../../applets/measurement/measurement.lib ${CMAKE_CURRENT_BINARY_DIR}/../../applets/settings/settings.lib ${CMAKE_CURRENT_BINARY_DIR}/../../libraries/EuroSoft/EuroSoft.lib ${CMAKE_CURRENT_BINARY_DIR}/../../libraries/EuroSoftUi/EuroSoftUi.lib ${CMAKE_CURRENT_BINARY_DIR}/../../libraries/3rdparty/QCustomPlot/QCustomPlot.lib ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/3rdparty/QuickDownload/lib/win/QuickDownload${LIB_SUFFIX}.lib ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/3rdparty/SCodes/lib/win/SCodes${LIB_SUFFIX}.lib ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/3rdparty/S6600RemoteDisplay/lib/win/S6600RemoteDisplay${LIB_SUFFIX}.lib ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/3rdparty/ncreport/lib/win/NCReport${LIB_SUFFIX}2.lib ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/3rdparty/ncreport/lib/win/NCReportZint${LIB_SUFFIX}2.lib Qt::PrintSupport Qt::WebChannel SetupAPI hid user32 opengl32.lib ) endif() if(ANDROID) target_compile_definitions(${PROJECT_NAME} PRIVATE QCUSTOMPLOT_USE_OPENGL ) target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../../applets/measurement/libmeasurement.a ${CMAKE_CURRENT_BINARY_DIR}/../../applets/settings/libsettings.a ${CMAKE_CURRENT_BINARY_DIR}/../../libraries/EuroSoft/libEuroSoft.a ${CMAKE_CURRENT_BINARY_DIR}/../../libraries/EuroSoftUi/libEuroSoftUi.a ${CMAKE_CURRENT_BINARY_DIR}/../../libraries/3rdparty/QCustomPlot/libQCustomPlot.a ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/3rdparty/QuickDownload/lib/android_${ANDROID_ABI}/libQuickDownload${LIB_SUFFIX}.a ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/3rdparty/SCodes/lib/android_${ANDROID_ABI}/libSCodes${LIB_SUFFIX}.a ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/3rdparty/S6600RemoteDisplay/lib/android_${ANDROID_ABI}/libS6600RemoteDisplay${LIB_SUFFIX}.a ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/3rdparty/ncreport/lib/android_${ANDROID_ABI}/libNCReport${LIB_SUFFIX}_${ANDROID_ABI}.so ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/3rdparty/ncreport/lib/android_${ANDROID_ABI}/libNCReportZint${LIB_SUFFIX}_${ANDROID_ABI}.so Qt::WebChannel Qt::AndroidExtras Qt::PrintSupport EGL GLESv2 ) list(APPEND CUSTOM_ANDROID_EXTRA_LIBS ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/3rdparty/ncreport/lib/android_${ANDROID_ABI}/libNCReport${LIB_SUFFIX}_${ANDROID_ABI}.so) list(APPEND CUSTOM_ANDROID_EXTRA_LIBS ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/3rdparty/ncreport/lib/android_${ANDROID_ABI}/libNCReportZint${LIB_SUFFIX}_${ANDROID_ABI}.so) list(REMOVE_DUPLICATES CUSTOM_ANDROID_EXTRA_LIBS) string(REPLACE ";" "," CUSTOM_ANDROID_EXTRA_LIBS_STRING "${CUSTOM_ANDROID_EXTRA_LIBS}") set(ANDROID_EXTRA_LIBS "${CUSTOM_ANDROID_EXTRA_LIBS_STRING}" CACHE INTERNAL "") endif() if(IOS) target_compile_definitions(${PROJECT_NAME} PRIVATE QT_NO_PRINTER ) target_link_libraries(${PROJECT_NAME} PRIVATE "-framework Photos" ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/3rdparty/ncreport/lib/ios/libNCReport.a ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/3rdparty/ncreport/lib/ios/libNCReportZint.a ) endif() if(MACOS) target_compile_definitions(${PROJECT_NAME} PRIVATE QT_NO_PRINTER ) target_link_libraries(${PROJECT_NAME} PRIVATE "-framework NCReport" NCReportZint ) endif() if(MACOS OR MSVC) target_link_libraries(${PROJECT_NAME} PRIVATE Qt::SerialPort ) endif() if(MSVC) endif() #install(TARGETS ${PROJECT_NAME} # BUNDLE DESTINATION . # LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) # Consider using qt_generate_deploy_app_script() for app deployment if # the project can use Qt 6.3. In that case rerun qmake2cmake with # --min-qt-version=6.3.
_______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest