7
votes

Quel est le but de la poubelle (fichiers) que QT Creator génère automatiquement et comment puis-je les apprivoiser?

Je suis assez nouveau à Qt, et j'utilise le nouveau Nokia Qt SDK Beta et je travaille à développer une petite application pour mon Nokia N900 dans mon temps libre.
Heureusement, j'ai pu tout configurer correctement, et aussi exécuter mon application sur l'appareil.

J'ai appris C ++ à l'école, alors je pensais que ce ne sera pas si difficile.
J'utilise Qt Creator comme IDE, car cela ne fonctionne pas avec Visual Studio.

Je souhaite également porter mon application à Symbian, alors j'ai géré l'émulateur plusieurs fois, et je compile également pour Windows pour déboguer les bugs les plus diaboliques. (Le débogueur ne fonctionne pas correctement sur l'appareil.)

Je viens d'un fond .NET, donc il y a des choses que je ne comprends pas.

Quand je frappe Le bouton de construction, QT Creator génère un tas de fichiers dans mon répertoire de projet:

  • moc _ *. CPP fichiers - je ne connais pas leur but. Est-ce que quelqu'un pourrait me dire?
  • *. o fichiers - je suppose que ce sont le code d'objet
  • *. RSS Fichiers - Je ne connais pas leur but, mais ils n'ont certainement rien à voir avec RSS
  • Makefile et makefile.debug - je n'ai aucune idée
  • AppName (sans extension) - L'exécutable pour maténo et appName.sis - L'exécutable pour Symbian, je suppose?
  • appname.loc - je n'ai aucune idée
  • appname_installer.pkg et appname_template.pkg - je n'ai aucune idée
  • qrc_resources.cpp - Je suppose que c'est pour mes ressources QT

    (où appname est le nom de l'application en question)

    J'ai remarqué que ces fichiers peuvent être supprimés en toute sécurité, QT Creator les régénère tout simplement. < BR> Le problème est qu'ils polluent mon répertoire source. Surtout parce que j'utilise la version contrôle, et si elles peuvent être régénérées, il n'est pas question de les télécharger à SVN.

    Alors, pourrait-on me dire quel est le but exact de ces fichiers et comment peut-on Je demande à Qt Creator de les placer dans un autre répertoire?

    Edit:

    Il semble que j'ai appris plus à partir des réponses de cette question que je ne le pensais voudrais. :)
    Gros merci à tous ceux qui m'ont aidé. J'ai donné à chacun une uppote, parce que je pouvais apprendre quelque chose de nouveau de toutes les réponses.

    En fait, quelle robinette recommandée semble être la solution la plus pratique, mais j'ai marqué la réponse de Kotti acceptée, car il m'a fourni le meilleur explication sur la façon dont le mécanisme de construction de QT fonctionne.

    la solution:

    Il semble que ni la maténo ni la boîte à outils Symbian ne soutiennent encore la construction d'ombres. J'utilise ceux-ci dans mon fichier de projet pour résoudre la situation: xxx


3 commentaires

Cela peut prendre des recherches, mais vous devriez être capable de trouver un moyen de faire passer ces fichiers ailleurs. (Nous construisons des applications QT mais n'utilisez pas qmake, donc je ne peux donc pas vous donner des détails pour cela; Je sais juste que les outils mettront les fichiers où que vous sachiez.)


@ Dash-Tom-Bang - Je suis curieux, quel outil utilisez-vous pour compiler et construire, sinon qmake?


Un outil interne dérivé de la confiture.


4 Réponses :


19
votes

Pas une réponse complète à votre question, mais juste une partie de cela :) aussi, c'est Googlable.

Devinez que si vous développez en C ++, vous devez savoir ce que signifie Makefile Stand for. De plus, je pense que le fichier .loc est généralement un fichier avec des chaînes / contenus localisées.

 text alt
(Source: THELINS.SE )

Comparaison du système de construction C ++ sur le système de construction QT, vous pouvez voir que le système de construction C ++ (les boîtes grises) est laissée non modifiée. Nous construisons toujours le code C ++ ici. Cependant, nous ajoutons plus de sources et d'en-têtes. Il y a trois générateurs de code impliqués ici:

le compilateur méta-objet (MOC dans l'illustration) - Le compilateur Meta-Object prend toutes les classes à partir de la macro Q_Object et génère un fichier source MOC _ *. CPP C ++. Ce fichier contient des informations sur la classe étant MOC'ed telle que le nom de classe, l'arborescence d'héritage, etc., mais aussi la mise en œuvre des signaux. Cela signifie que lorsque vous émettez un signal, vous appelez réellement une fonction générée par le MOC.

Le compilateur d'interface utilisateur (UIC dans l'illustration) - Le compilateur d'interface utilisateur prend des conceptions de designers et crée des fichiers d'en-tête. Ces fichiers d'en-tête sont ensuite inclus dans les fichiers source comme d'habitude, permettant d'appeler setupui pour instanquer une conception d'interface utilisateur.

Le compilateur de ressources QT (RCC dans l'illustration) - Le compilateur de ressources est quelque chose que nous n'avons pas encore parlé. Il permet d'intégrer des images, des fichiers texte, etc. dans votre exécutable, mais toujours pour y accéder en tant que fichiers. Nous examinerons cela plus tard, je veux juste l'inclure dans cette image où elle appartient.

J'espère que cette illustration clarifie ce que QT fait vraiment pour ajouter de nouveaux beaux mots-clés à C ++. Si vous êtes curieux - n'hésitez pas à lire certains des fichiers générés. Ne les modifiez pas - ils sont régénérés à chaque fois que vous construisez votre application.

Si vous utilisez QTCreator, les fichiers MOC sont générés dans les sous-répertoires de votre projet de débogage et de libération de votre répertoire de projet. Les fichiers UIC sont stockés à la racine du répertoire de projet. Les fichiers RCC sont généralement ennuyeux, mais je suis sûr que vous pouvez les trouver dans votre répertoire de projet Hierarcy quelque part.


Edit: Vous n'avez pas à inclure ces fichiers dans votre SVN. Ceci est plutôt la même merde que de commiter .ncb , .pdb et d'autres fichiers temporaires. Chaque fois que vous modifiez quelque chose dans votre application QT, ces fichiers temporaires sont régénérés comme une mise à jour de vos modifications. Il n'est donc pas logique de les engager à SVN.


6 commentaires

@Kotti - merci beaucoup! Cependant, ils sont vraiment tous placés dans le répertoire racine de mon projet. Je serais heureux si je pouvais l'obtenir de les placer dans un de débogage ou bac .


Comme je me souviens de la façon dont j'ai fait des choses Qt (j'ai utilisé Visual Studio + QT), une fenêtre de réglages a été utilisée dans laquelle vous pouvez spécifier où placer ces fichiers générés. Dans mon cas, il a été défini sur GeneratedFiles et je n'y ai même pas pensé. Je suis à peu près sûr qu'il devrait y avoir le même commutateur dans Qt Creator. En outre, pourquoi avez-vous dit que qt ne fonctionne pas avec vs?


@Kotti - Je dis parce que ça ne marche pas. Cela ne me permet pas de créer un nouveau projet. Peut-être qu'il est gâché par une extension vs. Mais cela n'a pas d'importance, car je ne pense pas qu'il soit possible de déménager pour des appareils mobiles avec elle. (Au moins, je n'ai pas pu trouver de ressources à ce sujet.)


@Kotti - Astuce: Si vous commencez votre commentaire avec @venemo , cela vous informera donc que j'ai une nouvelle réponse. :)


@Venemo je doute aussi que ce soit possible. Quoi qu'il en soit, l'intégration QT dans Visual Studio est extrêmement convinie, du moins pour moi, alors je peux même dire que cela vaut vraiment la peine de réinstaller le studio visuel et de passer beaucoup de temps afin de le faire fonctionner. En outre, merci de pointer sur ce @ astuce :)


@Kotti - J'ai à la fois VS 2008 et VS 2010, donc pas besoin de réinstaller ... Je suis un .Net Dev surtout, c'est pourquoi j'ai de telles questions noobaines sur Qt. :)



1
votes

N'essayez pas d'obtenir les fichiers stockés dans un autre répertoire; Dites plutôt à Subversion de les ignorer, comme expliqué à http://svnbook.red-bean.com/fr/1.4/svn.advanced.props.special.ignore.html , par exemple.

La plupart des systèmes de contrôle des sources ont un bon support pour ignorer les fichiers générés, car il s'agit d'un problème touché par presque tous les logiciels.


0 commentaires

5
votes

Vous pouvez dire qmake (et donc qtcreator) de mettre les fichiers générés ailleurs en ajoutant ce qui suit à votre fichier .Pro pour le projet xxx

Ceci mettrait tous les fichiers d'interface utilisateur dans le. Répertoire UI, fichiers MOC dans le directeur .MOC et tous les fichiers .O dans le répertoire .OBJ. (Bien sûr, vous pouvez les changer comme vous le souhaitez)

L'aide correspondante pour QMake est à: http://doc.qt.io/archives/ 4.6 / qmake-variable-référence.html # moc-dir


0 commentaires