2009-12-19 5 views
9

Comment puis-je compiler mon application sur Qt. En ce qui concerne chaque projetComment croiser l'application qt de compilation pour différentes plates-formes

J'ai besoin deux versions

1). Qui fonctionne sur l'ordinateur sur Qvfb & i386 Architecture

2). Qui fonctionne sur le périphérique avec Linux Framebuffer & ARM Architecture

J'ai déjà compilé Qt pour le périphérique ainsi que pour Qvfb. Je suis capable de lancer des exemples sur les deux plates-formes, mais comment puis-je cross-compiler mes applications. Je préférerais que les deux sorties restent dans des répertoires différents, ce qui signifie que la sortie de i386 reste dans la plate-forme de sortie-i386 et que la sortie de ARM reste dans le répertoire de sortie-ARM. J'utilise Qt 4.6 pour Linux embarqué.

Répondre

2

Qt prend tous les détails spécifiques à la plate-forme du fichier mkspec.

Spécifiez le fichier mkspec à qmake à compiler en utilisant l'argument de ligne de commande -spec de qmake.

dans le fichier mkspec il y a beaucoup qui définit vous pouvez personnaliser la compilation pour différentes plates-formes comme je peux utiliser DESTDIR pour envoyer le fichier de sortie final répertoire particulier, OBJECTS_DIR pour envoyer des objets fichier dans le répertoire particulier. MOC_DIR pour envoyer des fichiers générés par moc vers un répertoire particulier, UI_DIR pour générer des en-têtes générés et des fichiers cpp vers un répertoire particulier.

2

La fin de this article vous montre comment modifier qmake dans un répertoire de travail (vous devez d'abord exécuter make destclean en premier). Cet autre article décrit l'environnement de base Qt for embedded Linux, juste pour vous donner une vue d'ensemble.

4

Vous pouvez simplement définir DESTDIR dans votre fichier .pro. Voir the qmake variable reference. Vous pouvez également ajuster les variables OBJECTS_DIR, UI_DIR, MOC_DIR et RCC_DIR.

+0

Ajustez également les autres répertoires. Sinon, vous pourriez essayer de relier des objets construits pour une plate-forme dans un exécutable construit pour l'autre. –