2016-09-06 1 views
0

J'ai une version Qt qui prend en charge la suite de ABI (Qt Creator → Préférences → Créer & Run/Versions Qt):Comment détecter l'architecture iOS cible dans qmake?

  • bras-macos-générique-mach_o-32bit
  • bras-macos-générique mach_o -64bit
  • x86-macos-générique-mach_o-32bit
  • x86-macos-générique-mach_o-64bit

Ainsi, la combinaison dans un kit Qt cette version Qt avec différents Compil Je peux construire des bibliothèques pour toutes les architectures mentionnées.

En même temps, la mkspecs/qconfig.pri contient:

host_build { 
    QT_ARCH = x86_64 
    QT_TARGET_ARCH = arm 
} else { 
    QT_ARCH = arm 
} 

Donc, je ne peux pas détecter dans un fichier .pro une architecture cible (il est toujours arm). Je peux vérifier CONFIG pour la valeur iphonesimulator et ainsi détecter l'architecture de bras/pas de bras mais il y a toujours le problème 32bit/64bit. Y at-il un moyen de distinguer les builds armv7/arm64/... dans qmake (fichier .pro)?

+0

Pour quelle raison avez-vous besoin de les distinguer? Je veux dire, pour les fichiers pro du système qmake, il est préférable d'être aussi multiplateforme que possible. Btw, vous pouvez explicitement définir la configuration de construction, comme ceci: Ajouter une cible/type de construction dans le Qt Creator, comme ios-armv7; Ajoutez aussi quelque chose comme 'CONFIG + = ios-armv7' à ses arguments. Vous pouvez maintenant effectuer des actions spécifiques à l'architecture dans votre fichier .pro: 'ios-armv7 {...}' –

+0

Je dois effectuer des tâches de post-construction spécifiques (qui dépendent du type d'arche) telles que signer et déployer le programme d'installation, exécuter VM spécifiques et tests de lancement ... –

Répondre

0

La seule méthode que je trouve est:

Qt Creator → Préférences → Construire & Exécuter/Kits → Environnement → Modifier ...

var spécifique à la valeur définie IOS_ARCH env pour chaque kit.

Dans le fichier .pro:

IOS_ARCH = $$(IOS_ARCH) 
!isEmpty(IOS_ARCH): TARGET_ARCH = $$IOS_ARCH 
# then use $$TARGET_ARCH as usual