[Qbs] Selecting target architecture for Android

Alberto Mardegan mardy at users.sourceforge.net
Sun May 22 21:57:20 CEST 2022


Hi there!
   So far I've built my Android application using Qt 5.12, for the arm 
architecture only, and everything has worked fine.

Today I tried migrating to 5.15, which supports multiarch, and I'm 
getting an issue: after building all the files for all the four 
supported architectures ("Qt with multiple abi detected: 
'armeabi-v7a,arm64-v8a,x86,x86_64'"), I get an error during the install 
phase:

======
ERROR: Cannot install files 
'/home/mardy/src/git/mappero/abuild/default/MapperoCore.eyJhcmNoaXRlY3R1cmUiOiJ4ODZfNjQifQ--.8341646d/libMapperoCore.so' 
and 
'/home/mardy/src/git/mappero/abuild/default/MapperoCore.eyJhcmNoaXRlY3R1cmUiOiJhcm02NCJ9.14539b45/libMapperoCore.so' 
to the same location 
'/home/mardy/src/git/mappero/abuild/default/install-root/usr/local/lib/libMapperoCore.so'. 
If you are attempting to install a directory hierarchy, consider using 
the qbs.installSourceBase property.
======

where MapperoCore is a DynamicLibrary. But actually I didn't spend time 
investigating this (and neither should you), because I don't really care 
about other architectures: I would be happier if my Android package 
contained just the armv7 binaries :-)

But how do I do that? I tried specifying "qbs.architectures:armeabi-v7a" 
to QBS's command line, but then it looks like it cannot find the Qt 
libraries:

=======
Build graph does not yet exist for configuration 'default'. Starting 
from scratch.
Resolving project for configuration default
Setting up Qt at '/home/mardy/Qt/5.15.2/android//bin/qmake'...
Qt with multiple abi detected: 'armeabi-v7a,arm64-v8a,x86,x86_64'
Configuring abi 'armeabi-v7a'...
Configuring abi 'arm64-v8a'...
Configuring abi 'x86'...
Configuring abi 'x86_64'...
Qt was set up successfully.
ERROR: /home/mardy/src/git/mappero/lib/Mappero/Mappero.qbs:3:1 Error 
while handling product 'MapperoCore':
/home/mardy/src/git/mappero/lib/Mappero/Mappero.qbs:62:5 Module Qt.core 
could not be loaded.
/home/mardy/src/git/mappero/lib/Mappero/Mappero.qbs:63:5 Module Qt.gui 
could not be loaded.
[...]
=======

How do I tell QBS to just use a single architecture for Android? If 
possible, I'd like doing that from the command line, since the project 
is multi platform and I wouldn't like to clobber the QBS project file 
for this.

Thanks to whoever can help!

Ciao,
   Alberto

-- 
http://www.mardy.it - Geek in un lingua international


More information about the Qbs mailing list