Unsolved DEPLOYMENTFOLDERS - can i use in Qt 5.5.1 ?
-
I have a Qt 5.2.1 project with DEPLOYMENTFOLDERS macro in .pro file, and also .pri file had scripts corresponding to it.
.pro file
folder_01.source = qml folder_01.target = / folder_02.source = images folder_02.target = / DEPLOYMENTFOLDERS = folder_01 folder_02 TEMPLATE = app QT += qml quick CONFIG += c++11 SOURCES += main.cpp RESOURCES += # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH = # Default rules for deployment. include(deployment.pri) qtcAddDeployment()
.pri file
defineTest(qtcAddDeployment) { for(deploymentfolder, DEPLOYMENTFOLDERS) { item = item$${deploymentfolder} greaterThan(QT_MAJOR_VERSION, 4) { itemsources = $${item}.files } else { itemsources = $${item}.sources } $$itemsources = $$eval($${deploymentfolder}.source) itempath = $${item}.path $$itempath= $$eval($${deploymentfolder}.target) export($$itemsources) export($$itempath) DEPLOYMENT += $$item } MAINPROFILEPWD = $$PWD android-no-sdk { for(deploymentfolder, DEPLOYMENTFOLDERS) { item = item$${deploymentfolder} itemfiles = $${item}.files $$itemfiles = $$eval($${deploymentfolder}.source) itempath = $${item}.path $$itempath = /data/user/qt/$$eval($${deploymentfolder}.target) export($$itemfiles) export($$itempath) INSTALLS += $$item } target.path = /data/user/qt export(target.path) INSTALLS += target } else:android { for(deploymentfolder, DEPLOYMENTFOLDERS) { item = item$${deploymentfolder} itemfiles = $${item}.files $$itemfiles = $$eval($${deploymentfolder}.source) itempath = $${item}.path $$itempath = /assets/$$eval($${deploymentfolder}.target) export($$itemfiles) export($$itempath) INSTALLS += $$item } x86 { target.path = /libs/x86 } else: armeabi-v7a { target.path = /libs/armeabi-v7a } else { target.path = /libs/armeabi } export(target.path) INSTALLS += target } else:win32 { copyCommand = for(deploymentfolder, DEPLOYMENTFOLDERS) { source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) source = $$replace(source, /, \\) sourcePathSegments = $$split(source, \\) target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments) target = $$replace(target, /, \\) target ~= s,\\\\\\.?\\\\,\\, !isEqual(source,$$target) { !isEmpty(copyCommand):copyCommand += && isEqual(QMAKE_DIR_SEP, \\) { copyCommand += $(COPY_DIR) \"$$source\" \"$$target\" } else { source = $$replace(source, \\\\, /) target = $$OUT_PWD/$$eval($${deploymentfolder}.target) target = $$replace(target, \\\\, /) copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\" } } } !isEmpty(copyCommand) { copyCommand = @echo Copying application data... && $$copyCommand copydeploymentfolders.commands = $$copyCommand first.depends = $(first) copydeploymentfolders export(first.depends) export(copydeploymentfolders.commands) QMAKE_EXTRA_TARGETS += first copydeploymentfolders } } else:ios { copyCommand = for(deploymentfolder, DEPLOYMENTFOLDERS) { source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) source = $$replace(source, \\\\, /) target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target) target = $$replace(target, \\\\, /) sourcePathSegments = $$split(source, /) targetFullPath = $$target/$$last(sourcePathSegments) targetFullPath ~= s,/\\.?/,/, !isEqual(source,$$targetFullPath) { !isEmpty(copyCommand):copyCommand += && copyCommand += mkdir -p \"$$target\" copyCommand += && cp -r \"$$source\" \"$$target\" } } !isEmpty(copyCommand) { copyCommand = echo Copying application data... && $$copyCommand !isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";" QMAKE_POST_LINK += "$$copyCommand" export(QMAKE_POST_LINK) } } else:unix { maemo5 { desktopfile.files = $${TARGET}.desktop desktopfile.path = /usr/share/applications/hildon icon.files = $${TARGET}64.png icon.path = /usr/share/icons/hicolor/64x64/apps } else:!isEmpty(MEEGO_VERSION_MAJOR) { desktopfile.files = $${TARGET}_harmattan.desktop desktopfile.path = /usr/share/applications icon.files = $${TARGET}80.png icon.path = /usr/share/icons/hicolor/80x80/apps } else { # Assumed to be a Desktop Unix copyCommand = for(deploymentfolder, DEPLOYMENTFOLDERS) { source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) source = $$replace(source, \\\\, /) macx { target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) } else { target = $$OUT_PWD/$$eval($${deploymentfolder}.target) } target = $$replace(target, \\\\, /) sourcePathSegments = $$split(source, /) targetFullPath = $$target/$$last(sourcePathSegments) targetFullPath ~= s,/\\.?/,/, !isEqual(source,$$targetFullPath) { !isEmpty(copyCommand):copyCommand += && copyCommand += $(MKDIR) \"$$target\" copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\" } } !isEmpty(copyCommand) { copyCommand = @echo Copying application data... && $$copyCommand copydeploymentfolders.commands = $$copyCommand first.depends = $(first) copydeploymentfolders export(first.depends) export(copydeploymentfolders.commands) QMAKE_EXTRA_TARGETS += first copydeploymentfolders } } !isEmpty(target.path) { installPrefix = $${target.path} } else { installPrefix = /opt/$${TARGET} } for(deploymentfolder, DEPLOYMENTFOLDERS) { item = item$${deploymentfolder} itemfiles = $${item}.files $$itemfiles = $$eval($${deploymentfolder}.source) itempath = $${item}.path $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target) export($$itemfiles) export($$itempath) INSTALLS += $$item } !isEmpty(desktopfile.path) { export(icon.files) export(icon.path) export(desktopfile.files) export(desktopfile.path) INSTALLS += icon desktopfile } isEmpty(target.path) { target.path = $${installPrefix}/bin export(target.path) } INSTALLS += target } export (ICON) export (INSTALLS) export (DEPLOYMENT) export (LIBS) export (QMAKE_EXTRA_TARGETS) }
This helped me not to add all qml and images in exe and be separate but along with the package.
But when I create new project in Qt 5.5.1, this doesn't gets created in .pro or .pri files. Instead the qml file is added to the resource file in the project. This makes difficulty as we often changes the qml files for ui changes (because to take effect the changes in qml file we need to remove it from resource file and add again).
Is there an alternative to add qml files in resource file or can i copy paste .pro and .pri from 5.2.1 version to 5.5 version?
-
You can copy-paste, it should still work.
-
@sierdzio : I tried it and works fine in windows.
But for android I get the below error:W/libSmart_Drive.so( 763): (null):0 ((null)): QQmlApplicationEngine failed to load component W/libSmart_Drive.so( 763): (null):0 ((null)): file:///data/data/org.qtproject.example.Smart_Drive/files/qml/main.qml:-1 File not found W/libSmart_Drive.so( 763):