Desktop app won't build for android
Unsolved
Mobile and Embedded
-
I'm very new to Qt and my internship requires me to port an existing desktop application to Android and iOS. I'm using the original Windows machine that the app was developed on. It builds fine on the desktop kit, but for the Android armeabi-v7a kit, this same message gets printed in an endless loop:
C:\Qt\Qt5.9.2\5.9.2\android_armv7\bin\rcc.exe: File does not exist '\home\<user>\QTBF\build\OslQtCommon\oslqtcommon.qrc'
I get the same message whenever I run a clean, qmake, or build. I'm using Qt 5.9.2, JDK 1.8, SDK 26.1.1, and NDK r10e.
Here is the pro file:
include (common.pri) TEMPLATE = subdirs SUBDIRS += OslCommon \ IcIface \ OslQtCommon \ OslQtGui \ Marco # note: this line is probably not needed and slowing down builds #CONFIG += ordered TARGET = Marco DEPLOY_TARGET = $$shell_quote($$shell_path($${GLOBAL_BUILD_PATH}/$${TARGET}/$${CONFIGDIR}/$${TARGET}$${TARGET_CUSTOM_EXT})) # directory aliases OslCommon.subdir = OslCommon IcIface.subdir = IcIface OslQtCommon.subdir = OslQtCommon OslQtGui.subdir = OslQtGui Marco.subdir = Marco # external subdirs not in the SUBDIRS directive... for build purposes. # these will get checked out by the build script but are ignored by qmake and creator icShared.subdir = icShared HF_Shared.subdir = HF_Shared # dependencies IcIface.depends = OslCommon OslQtCommon.depends = OslCommon OslQtCommon.depends = IcIface OslQtGui.depends = IcIface OslQtGui.depends = OslQtCommon Marco.depends = IcIface Marco.depends = OslQtCommon Marco.depends = OslQtGui # # This sections defines the package target and adds it to # INSTALLS so that it will run by 'make install' # # location of the output package package.path = $${PACKAGE_DIR}/$${CONFIGDIR} linux { package.commands += "export LD_LIBRARY_PATH=$${GLOBAL_BUILD_PATH}/OslCommon/$${CONFIGDIR}:$${GLOBAL_BUILD_PATH}/OslQtCommon/$${CONFIGDIR}:$${GLOBAL_BUILD_PATH}/IcIface/$${CONFIGDIR};" package.commands += $${LIN_DEPLOY_COMMAND} $${DEPLOY_TARGET} -appimage -bundle-non-qt-libs -verbose=1; } macx { ICNS_FILE=Marco package.commands += "export DYLD_LIBRARY_PATH=$${GLOBAL_BUILD_PATH}/OslCommon/$${CONFIGDIR}:$${GLOBAL_BUILD_PATH}/OslQtCommon/$${CONFIGDIR}:$${GLOBAL_BUILD_PATH}/IcIface/$${CONFIGDIR};" package.commands += $${MAC_DEPLOY_COMMAND} $${DEPLOY_TARGET} -verbose=1; # Some special things have to be done for OSX to copy the shared libs # into the application bundle. This is a bit tedious but there # doesn't seem to be a better way to handle non-qt dependencies. # macdeployqt doesn't pick them up. # copy shared libs (dylib files) into app bundle. # eg: cp /Users/mhiggins/QTBF/build/OslCommon/release/libOslCommon.1.0.0.dylib Marco.app/Contents/Frameworks #package.commands += "mkdir $${DEPLOY_TARGET}/Contents/Frameworks;" package.commands += "cp $${GLOBAL_BUILD_PATH}/OslCommon/$${CONFIGDIR}/libOslCommon.1.0.0.dylib $${DEPLOY_TARGET}/Contents/Frameworks/;" package.commands += "cp $${GLOBAL_BUILD_PATH}/IcIface/$${CONFIGDIR}/libIcIface.1.0.0.dylib $${DEPLOY_TARGET}/Contents/Frameworks/;" package.commands += "cp $${GLOBAL_BUILD_PATH}/OslQtCommon/$${CONFIGDIR}/libOslQtCommon.1.0.0.dylib $${DEPLOY_TARGET}/Contents/Frameworks/;" package.commands += "cp $${GLOBAL_BUILD_PATH}/OslQtGui/$${CONFIGDIR}/libOslQtGui.1.0.0.dylib $${DEPLOY_TARGET}/Contents/Frameworks/;" # app bundle icon package.commands += "cp $${PWD}/$${TARGET}/$${ICNS_FILE}.icns $${DEPLOY_TARGET}/Contents/Resources/;" # update the shaed lib dependency paths for each of the executables and libs in the app bundle # eg: install_name_tool -change libOslCommon.1.dylib @rpath/libOslCommon.1.0.0.dylib Marco.app/Contents/MacOS/Marco # install_name_tool -change libOslCommon.1.dylib @rpath/libOslCommon.1.0.0.dylib Marco.app/Contents/Frameworks/libIcIface.1.0.0.dylib # IcIface package.commands += "install_name_tool -change libOslCommon.1.dylib @rpath/libOslCommon.1.0.0.dylib $${DEPLOY_TARGET}/Contents/Frameworks/libIcIface.1.0.0.dylib;" # OslQtCommon package.commands += "install_name_tool -change libOslCommon.1.dylib @rpath/libOslCommon.1.0.0.dylib $${DEPLOY_TARGET}/Contents/Frameworks/libOslQtCommon.1.0.0.dylib;" package.commands += "install_name_tool -change libIcIface.1.dylib @rpath/libIcIface.1.0.0.dylib $${DEPLOY_TARGET}/Contents/Frameworks/libOslQtCommon.1.0.0.dylib;" # OslQtGui package.commands += "install_name_tool -change libOslCommon.1.dylib @rpath/libOslCommon.1.0.0.dylib $${DEPLOY_TARGET}/Contents/Frameworks/libOslQtGui.1.0.0.dylib;" package.commands += "install_name_tool -change libOslQtCommon.1.dylib @rpath/libOslQtCommon.1.0.0.dylib $${DEPLOY_TARGET}/Contents/Frameworks/libOslQtGui.1.0.0.dylib;" package.commands += "install_name_tool -change libIcIface.1.dylib @rpath/libIcIface.1.0.0.dylib $${DEPLOY_TARGET}/Contents/Frameworks/libOslQtGui.1.0.0.dylib;" # Marco exectuable package.commands += "install_name_tool -change libOslCommon.1.dylib @rpath/libOslCommon.1.0.0.dylib $${DEPLOY_TARGET}/Contents/MacOS/Marco;" package.commands += "install_name_tool -change libIcIface.1.dylib @rpath/libIcIface.1.0.0.dylib $${DEPLOY_TARGET}/Contents/MacOS/Marco;" package.commands += "install_name_tool -change libOslQtCommon.1.dylib @rpath/libOslQtCommon.1.0.0.dylib $${DEPLOY_TARGET}/Contents/MacOS/Marco;" package.commands += "install_name_tool -change libOslQtGui.1.dylib @rpath/libOslQtGui.1.0.0.dylib $${DEPLOY_TARGET}/Contents/MacOS/Marco;" #package.commands += $${MAC_DEPLOY_COMMAND} $${DEPLOY_TARGET} -dmg -verbose=1; #package.files += $$shell_quote($$shell_path($${GLOBAL_BUILD_PATH}/$${TARGET}/$${CONFIGDIR}/$${TARGET}.dmg)) BUNDLE_NAME = $${TARGET}$${TARGET_CUSTOM_EXT} osx_post_package.path = $${PACKAGE_DIR} # Set the app icon in the Info.plist file using the defaults command , convert it back to XML using plutil command osx_post_package.commands += "defaults write $${PACKAGE_DIR}/$${CONFIGDIR}/$${BUNDLE_NAME}/Contents/Info.plist CFBundleIconFile -string '$${ICNS_FILE}';" osx_post_package.commands += "plutil -convert xml1 $${PACKAGE_DIR}/$${CONFIGDIR}/$${BUNDLE_NAME}/Contents/Info.plist;" # dmg icon osx_post_package.commands += "cp $${PWD}/logo_halo256.icns $${PACKAGE_DIR}/$${CONFIGDIR}/.VolumeIcon.icns;" # create a DMG file for the app #create_dmg.bash Marco /Users/mhiggins/output/Marco_v2_0_2_b04/package/release osx_post_package.commands += "$${PWD}/create_dmg.bash $${TARGET} $${PACKAGE_DIR}/$${CONFIGDIR};" } win32 { # add windeployqt to the target package.commands += $${WIN_DEPLOY_COMMAND} $${DEPLOY_TARGET} \ --dir $${PACKAGE_DIR}/$${CONFIGDIR} \ --network \ --serialport # Internal libs package.files += $${GLOBAL_BUILD_PATH}/OslCommon/$${CONFIGDIR}/OslCommon.dll package.files += $${GLOBAL_BUILD_PATH}/OslQtCommon/$${CONFIGDIR}/OslQtCommon.dll package.files += $${GLOBAL_BUILD_PATH}/OslQtGui/$${CONFIGDIR}/OslQtGui.dll package.files += $${GLOBAL_BUILD_PATH}/IcIface/$${CONFIGDIR}/IcIface.dll } # the main applicatin executable package.files += $${DEPLOY_TARGET} #package.files += $${PWD}/OS-icon-256-halo.ico INSTALLS += package # add the mac os post-package steps (for creating dmg file) macx{ osx_post_package.depends = $${INSTALLS} INSTALLS += osx_post_package } # run windeployqt after linking #QMAKE_POST_LINK = $${WIN_DEPLOY_COMMAND} $${DEPLOY_TARGET}
And here is common.pri:
PROJECT_TLD = $$_PRO_FILE_PWD_ #message("Path to .pri is "$$_PRO_FILE_) CONFIG(debug, debug|release) { CONFIGDIR = "debug" DEFINES += DEBUG_BUILD } else { CONFIGDIR = "release" } # Set the build output directory if BUILD_DIRNAME not passed to qmake !defined(BUILD_DIRNAME, var) { #message("BUILD_DIRNAME Not Defined! Using default name: build") BUILD_DIRNAME = "build" } win32 { QT_INSTALL_PATH = C:\Qt5.7\5.7\mingw53_32 # # Edit these paths for working in Creator # GLOBAL_BUILD_PATH = D:/workspace-qt/$$BUILD_DIRNAME IC_INCLUDES_PATH = D:\workspace-qt QT_INCLUDES_PATH = D:\workspace-qt !defined(EXTERNAL_LIBS, var) { EXTERNAL_LIBS = D:/libs } # Set these paths for the build machine PYTHON="C:\Python27\python.exe" WIN_SDK="C:\Program Files (x86)\Windows Kits\10" TARGET_CUSTOM_EXT = .exe TARGET_SHARED_EXT = .dll WIN_DEPLOY_COMMAND = "C:\Qt5.7\5.7\mingw53_32\bin\windeployqt" } linux { GLOBAL_BUILD_PATH = /home/<user>/QTBF/$$BUILD_DIRNAME IC_INCLUDES_PATH = /home/<user>/QTBF QT_INCLUDES_PATH = /home/<user>/QTBF !defined(EXTERNAL_LIBS, var) { EXTERNAL_LIBS = /opt/devapps } PYTHON="python" TARGET_CUSTOM_EXT = " " TARGET_SHARED_EXT = .so DESTDIR = $$CONFIGDIR #This must be on the path LIN_DEPLOY_COMMAND = linuxdeployqt } macx { #QT_INSTALL_PATH = /apps/qt/5.5/ GLOBAL_BUILD_PATH = /Users/<user>/QTBF/$$BUILD_DIRNAME #EXTERNAL_LIBS = /devtools/libs IC_INCLUDES_PATH = /Users/<user>/QTBF QT_INCLUDES_PATH = /Users/<user>/QTBF PYTHON="python" TARGET_CUSTOM_EXT = .app TARGET_SHARED_EXT = .dylib DESTDIR = $$CONFIGDIR #This must be on the path MAC_DEPLOY_COMMAND = macdeployqt } # This is for command line builds. BUILD_ROOT is defined on the qmake command # in qtbuild.py line and overrides the GLOBAL_BUILD_PATH setting above. defined(BUILD_ROOT, var) { message( BUILD_ROOT is set: $$BUILD_ROOT) GLOBAL_BUILD_PATH = $$BUILD_ROOT/$$BUILD_DIRNAME IC_INCLUDES_PATH = $$BUILD_ROOT QT_INCLUDES_PATH = $$BUILD_ROOT } # don't edit these... they're derived from above PACKAGE_DIR = $${GLOBAL_BUILD_PATH}/package #DEFINES += IC_BAUDS B230400 B4000000 QMAKE_CXXFLAGS += -std=c++0x #QMAKE_CXXFLAGS += -std=gnu++11 QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-variable \ -Wno-unused-parameter \ -Wno-ignored-qualifiers UI_DIR = ui MOC_DIR = moc OBJECTS_DIR = obj # Uncomment the following line to help debug the deploy command when running qmake warning($${WIN_DEPLOY_COMMAND} $${DEPLOY_TARGET})
This is a really big project and the developer who built it just left recently, so I would appreciate any help I can get. Thank you.