QMAKE_POST_LINK doesn't work for Android!
-
Hello,
I've two issues not single one as mention in post subject.
First issue:
QMAKE_POST_LINK
doesn't work for Android as mentioned below whilesystem()
works!Does this issue related to Android with qmake? Or there is something wrong with my code?
.pro
contains(ANDROID_TARGET_ARCH,armeabi-v7a) { CONFIG(release, debug|release) { APKPATH = $$shadowed($$PWD)/android-build/build/outputs/apk/android-build-debug.apk DISTRO_NAME = $$TARGET-android-$${PREFIX}.apk COMMAND = '$$PWD/distro-android/create.sh "$$APKPATH" "$$PWD" "$${DISTRO_NAME}" ' # Doesn't work!!! QMAKE_POST_LINK += $${COMMAND} # Works! # system($${COMMAND}) } ANDROID_EXTRA_LIBS = \ /home/tansu/mysql_driver_qt/libmariadb/libmariadb.so \ /home/tansu/Qt/5.9.1/android_armv7/plugins/sqldrivers/libqsqlmysql.so }
#!/bin/bash APKPATH=$1 PROJECT=$2 DISTRO_NAME=$3 cp -f $APKPATH $PROJECT/../distro/$DISTRO_NAME
Second issue
In case I usedsystem()
instead ofQMAKE_POST_LINK
I noticed that qmake call the function only in case .pro is not saved!Does this issue is a bug in QMake? Or I miss something in my code?
-
Hi,
I can't really comment on that however one thing I would check is what you are getting in your script. You might not be in the folder you think you are when the post link stuff is called.
-
@SGaist Well, for chekcing my code I added
message()
in .pro andecho
in .sh files.pro
contains(ANDROID_TARGET_ARCH,armeabi-v7a) { CONFIG(release, debug|release) { APKPATH = $$shadowed($$PWD)/android-build/build/outputs/apk/android-build-debug.apk DISTRO_NAME = $$TARGET-android-$${PREFIX}.apk COMMAND = '$$PWD/distro-android/create.sh "$$APKPATH" "$$PWD" "$${DISTRO_NAME}" ' message($${COMMAND}) # Doesn't work!!! QMAKE_POST_LINK += $${COMMAND} # Works! # system($${COMMAND}) } ANDROID_EXTRA_LIBS = \ /home/tansu/mysql_driver_qt/libmariadb/libmariadb.so \ /home/tansu/Qt/5.9.1/android_armv7/plugins/sqldrivers/libqsqlmysql.so }
#!/bin/bash APKPATH=$1 PROJECT=$2 DISTRO_NAME=$3 echo "${PROJECT}/../distro/${DISTRO_NAME}" > ${PROJECT}/../distro/log.txt cp -f $APKPATH $PROJECT/../distro/$DISTRO_NAME
The output of
message()
is correct as shown below:Project MESSAGE: /home/tansu/Projects/Tetris/src-qml/distro-android/create.sh "/home/tansu/Projects/Tetris/build-Tetris-Android_for_armeabi_v7a_GCC_4_9_Qt_5_9_1_for_Android_armv72-Release/android-build/build/outputs/apk/android-build-debug.apk" "/home/tansu/Projects/Tetris/src-qml" "Tetris-android-2017-08-03_04-43-05.apk"
But I couldn't get log.txt so I get pretty sure QMake doesn't call
QMAKE_POST_LINK
!In case I use:
.procontains(ANDROID_TARGET_ARCH,armeabi-v7a) { CONFIG(release, debug|release) { APKPATH = $$shadowed($$PWD)/android-build/build/outputs/apk/android-build-debug.apk DISTRO_NAME = $$TARGET-android-$${PREFIX}.apk COMMAND = '$$PWD/distro-android/create.sh "$$APKPATH" "$$PWD" "$${DISTRO_NAME}" ' message($${COMMAND}) # Doesn't work!!! # QMAKE_POST_LINK += $${COMMAND} # Works! system($${COMMAND}) } ANDROID_EXTRA_LIBS = \ /home/tansu/mysql_driver_qt/libmariadb/libmariadb.so \ /home/tansu/Qt/5.9.1/android_armv7/plugins/sqldrivers/libqsqlmysql.so }
Everything goes fine except QMake doesn't call
mesage()
andsystem()
functions unless .pro modified (not saved) which force me to modify .pro manually whenever I want to create a distro@SGaist Do you believe I've to attach a full project or a full demo project for clarifying this issue well?
-
Yes, that would be nice.
-
@tansgumus said in QMAKE_POST_LINK doesn't work for Android!:
@SGaist said in QMAKE_POST_LINK doesn't work for Android!:
Yes, that would be nice.
Whenever I try to upload the project I get this error although the zip file doesn't contain on binaries and its size is about 60KB
I uploaded the project on shared host because this forum doesn't work fine with attachments :(
https://send.firefox.com/download/9f8c48f645/#s-5nIhjmzt1mvgGEyGcNvw
[Mirror] https://www.justbeamit.com/8gbxp
[Mirror] https://ufile.io/fue6kPlease download QMLDistroTest.tar.bz2 (60 KB)
-
Tested with Qt 5.9.2 and it's working as expected. Well, the script bash is called.