Was ist der Zweck des Mülls (Dateien), dass Qt Creator erzeugt automatisch und wie kann ich sie zähmen?

StackOverflow https://stackoverflow.com/questions/2901152

Frage

Ich bin ziemlich neu in Qt, und ich bin die neue Nokia Qt SDK Beta mit und arbeite ich eine kleine Anwendung für mein Nokia N900 in meiner Freizeit zu entwickeln.
Glücklicherweise konnte ich alles richtig einzurichten, und auch meinen App auf dem Gerät ausgeführt werden.

Ich habe C ++ in der Schule gelernt haben, so dachte ich, es nicht so schwierig sein.
Ich benutze Qt Creator als meine IDE, weil es nicht die Arbeit mit Visual Studio der Fall ist.

Ich möchte auch zu portieren meine App Symbian, so dass ich den Emulator ein paar Mal ausgeführt haben, und ich kompilieren auch für Windows die übelsten Bugs zu debuggen. (Der Debugger funktioniert nicht richtig auf dem Gerät.)

Ich komme aus einem .NET-Hintergrund, so gibt es einige Dinge, die ich nicht verstehe.

Wenn ich den Build-Button drücken, Qt Creator erzeugt eine Reihe von Dateien zu meinem Projektverzeichnis:

  • moc_*.cpp Dateien - ich weiß nicht ihren Zweck. Könnte mir jemand sagen?
  • *.o Dateien - Ich gehe davon aus das ist der Objektcode
  • *.rss Dateien - ich weiß nicht ihren Zweck, aber sie haben definitiv nichts mit RSS zu tun
  • Makefile und Makefile.Debug - ich habe keine Ahnung,
  • AppName (ohne Verlängerung) - die ausführbare Datei für Maemo und AppName.sis - die ausführbare Datei für Symbian, ich denke
  • AppName.loc - ich habe keine Ahnung,
  • AppName_installer.pkg und AppName_template.pkg - ich habe keine Ahnung,
  • qrc_Resources.cpp - ich denke, das ist für meine Qt Ressourcen

(wobei AppName den Namen der betreffenden Anwendung ist)

bemerkte ich, dass diese Dateien sicher gelöscht werden, Qt Creator einfach regeneriert sie.
Das Problem ist, dass sie mein Quellverzeichnis verschmutzen. Vor allem, weil ich die Versionskontrolle verwenden, und wenn sie regeneriert werden kann, gibt es keinen Grund, sie zu SVN in dem Hochladen.

So könnte jemand mir bitte erklären, was der genaue Zweck dieser Dateien ist, und wie kann ich fragen Qt Creator sie in ein anderes Verzeichnis zu speichern?

EDIT:

Es scheint, dass ich mehr aus den Antworten dieser Frage gelernt, als ich dachte, ich würde. :)
Vielen Dank an alle, die mir geholfen. Ich gab jedem ein upvote, weil ich etwas Neues aus jeder Antwort lernen könnten.

Eigentlich, was Rob scheint empfohlen die bequemste Lösung zu sein, aber ich markierte Kotti Antwort akzeptiert, weil er mir, die mit der besten Erklärung darüber, wie Qt-Build-Mechanismus funktioniert.

Die Lösung:

Es scheint, dass weder die Maemo noch der Schatten Symbian unterstützt Toolchain als die noch baut, so dass ich diese in meiner Projekt-Datei verwenden, um die Situation zu lösen:

DESTDIR = ./NoSVN
OBJECTS_DIR = ./NoSVN
MOC_DIR = ./NoSVN
RCC_DIR = ./NoSVN
UI_HEADERS_DIR = ./NoSVN
War es hilfreich?

Lösung

Nicht ein voll auf Ihre Frage beantworten, sondern nur einen Teil davon :) Außerdem ist es googlable.

Vermutung, dass, wenn Sie in C ++ entwickeln, sollten Sie wissen, was tut Makefile Stand. Ich denke, auch die .loc Datei mit lokalisierten Strings / Inhalt im Allgemeinen eine Datei ist.


(Quelle: thelins.se )

das C ++ Build-System auf das Build-System Qt Vergleich, können Sie sehen, dass das C ++ Build-System, (die grauen Kästen), unmodifizierten gelassen werden. Wir bauen noch C ++ Code hier. Allerdings haben wir mehr Quellen und Header hinzufügen. Es gibt drei Code-Generatoren hier beteiligt: ??

Die Meta-Objekt-Compiler (moc in der Abbildung) - die Meta-Objekt-Compiler nehmen alle Klassen mit dem Q_OBJECT Makro starten und erzeugen eine moc _ * CPP C ++ Quelldatei.. Diese Datei enthält Informationen über die Klasse solchen moc'ed werden als Klassennamen, Vererbungsbaum, etc., aber auch die Umsetzung der Signale. Dies bedeutet, dass wenn Sie ein Signal aussenden, die Sie tatsächlich eine Funktion von dem moc erzeugte nennen.

Die Benutzeroberfläche Compiler (uic in der Abbildung) - Die Benutzeroberfläche Compiler nimmt Entwürfe von Designer und Header-Dateien erstellt. Diese Header-Dateien werden dann in Quelldateien wie üblich enthalten, was es möglich macht setupUi zu rufen eine User Interface Design instanziieren.

Die Qt-Ressource-Compiler (RCC in der Abbildung) - Der Ressource-Compiler ist etwas, das wir nicht über noch gesprochen haben. Es macht es möglich, Bilder einzubetten, Textdateien, etc. in die ausführbare Datei, aber immer noch den Zugriff auf sie als Dateien. Wir werden später auf diese aussehen, ich kann es nur aufnehmen wollen in diesem Bild, wo es hingehört.

Ich hoffe, diese Abbildung stellt klar, was Qt ist wirklich nett neu Stichworte, um C ++ hinzuzufügen. Wenn Sie neugierig sind - fühlen Sie sich frei, um einige der erzeugten Dateien zu lesen. Nur nicht verändern sie -. Sie jedes Mal, wenn Sie Ihre Anwendung erstellen regeneriert werden

Wenn Sie QtCreator verwenden, die moc-Dateien werden in den Debug-und Release Unterverzeichnissen von Ihrem Projektverzeichnis generieren. Die uic Dateien werden in der Wurzel des Projektverzeichnis gespeichert. Die RCC-Dateien sind in der Regel langweilig, aber ich bin sicher, dass Sie sie in Ihrem Projektverzeichnis hierarcy irgendwo finden können.


Edit: Sie müssen diese Dateien nicht in die SVN umfassen. Das ist ziemlich der gleiche Mist wie commiting .ncb, .pdb und andere temporäre Dateien. Jedes Mal, wenn Sie etwas in Ihrem Qt-Anwendung, diese temporären Dateien als Update für die Änderungen regeneriert erhalten ändern, so hat es keinen Sinn, sie zu SVN zu begehen.

Andere Tipps

Sie können qmake sagen (und damit QtCreator) an anderer Stelle die generierten Dateien zu setzen, indem die folgenden auf Ihre .pro-Datei für das Projekt hinzufügen

UI_DIR = .ui
MOC_DIR = .moc
OBJECTS_DIR = .obj

Dies würde setzt alle ui-Dateien im Verzeichnis .ui, moc Dateien im .moc Direktor und alle .o Dateien im OBJ-Verzeichnis. (Natürlich können Sie diese ändern, wie Sie möchten)

Die entsprechende Hilfe für qmake ist unter: http://doc.qt.io/archives/ 4.6 / qmake-Variable-reference.html # moc-dir

Wenn Sie Schatten-Builds (standardmäßig aktiviert in der Qt Creator 2.0 beta ), dann alle diese temporären Dateien werden in einem separaten Ordner erstellt. Zum Beispiel:

\MyProjects\ProjectFoo
\MyProjects\ProjectFoo-build

Sehr nützlich IMHO.

Versuchen Sie nicht, die Dateien in einem anderen Verzeichnis gespeichert zu bekommen; tell Subversion sie vielmehr zu ignorieren, wie unter http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.ignore.html , zum Beispiel.

haben die meisten Source-Control-Systeme eine gute Unterstützung für die generierten Dateien zu ignorieren, da dies ein Problem Hit ist von fast jedem Software-Projekt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top