Seite 1 von 1

Problem mit moc: Too many input files specified

Verfasst: 23. November 2009 15:56
von spatro
Hallo, ich verwendet Qt 4.5.3 und Visual Studio 2008. Ich habe seit heute das Problem, dass wenn ich zu einem meiner Projekte eine neue Klasse hinzufüge und das Q_OBJECT Macro einfüge folgender Fehler auftritt:

Code: Alles auswählen

Moc'ing propdialog.h...
moc: Too many input files specified
Usage: moc [options] <header-file>
  -o<file>           write output to file rather than stdout
  -I<dir>            add dir to the include path for header files
  -E                 preprocess only; do not generate meta object code
  -D<macro>[=<def>]  define macro, with optional definition
  -U<macro>          undefine macro
  -i                 do not generate an #include statement
  -p<path>           path prefix for included file
  -f[<file>]         force #include, optional file name
  -nw                do not display warnings
  @<file>            read additional options from file
  -v                 display version of moc
Wenn man Q_OBJECT entfernt geht wieder alles einwandfrei, nur funktionieren dann halt keine SLOTS mehr. Hat jemand eine Idee, wo der Fehler liegt oder was man dagegen tun kann?

Verfasst: 23. November 2009 17:09
von AuE
zeig mal die klassendefinition

Verfasst: 24. November 2009 09:26
von spatro

Code: Alles auswählen

#ifndef PROPDIALOG_H
#define PROPDIALOG_H

#include <QDialog>
#include "GeneratedFiles/ui_propdialog.h"

class PropDialog : public QDialog
{
	Q_OBJECT;
public:
	PropDialog(QWidget *parent = 0);
	~PropDialog();

private:
	Ui::PropDialogClass ui;
};

#endif // PROPDIALOG_H
Ich habe auch versucht in ein anderes Project, in der selben Projektmappe eine neue Klasse mit Q_OBJECT einzufügen. Dabei tritt der selbe Fehler auf. Meine Vermutung ist, dass es wirklich zuviele Dateien für moc sind. Nur verstehe ich nicht, dass er die gesamte Projektmappe auf einmal verarbeiten will.

Verfasst: 24. November 2009 09:46
von AuE
Der einzige Unterschied den ich grad seh is das ich noch nen

Code: Alles auswählen

lass PropDialog : public QDialog 
{ 
   Q_OBJECT; 
public: 
   PropDialog(QWidget *parent = 0); 
   ~PropDialog(); 

private: 
   Ui::PropDialogClass ui; 
};
Und den ui header im cpp includiere....


Wieviele Files sind es denn? Werden die mocs auch in den Ordner gebaut? Irgendwelche?



Hast du evtl ein Demoprojekt das wir hier mal reproduzieren können?

Du hast auch die ui files mit dem designer erzeugt?

Verfasst: 26. November 2009 08:48
von spatro
Sorry, dass ich erst jetzt wieder antworte. Ich habe leider kein Demo Projekt, denn es passiert bei allen Projekten. Wenn ich sie aber einzeln, ohne die Projektmappe lade, dann tauchen zwar andere Fehler, wegen verschiedener Abhängigkeiten auf, aber der moc Fehler ist weg.

Es scheint wirklich so zu sein, dass es einfach zu viele Dateien sind. Am Code dürfte es meiner Meinung nach nicht liegen, denn wenn ich einfach eine neue Qt Gui Klasse einfüge, wie ich es früher ja auch gemacht habe und keine Änderungen daran vornehme passiert genau das gleiche.

Verfasst: 26. November 2009 09:01
von solarix
Es scheint wirklich so zu sein, dass es einfach zu viele Dateien sind
moc wird für jede Datei einzeln aufgerufen (moc headerxy.h). Daher ist es völlig egal, wieviele Dateien du hast. Diese Fehlermeldung bringt moc, wenn man mehr als eine Headerdatei angibt: z.B. moc header1.h header2.h.. ich kenne weder VS noch deine Umgebung, aber die Frage ist: woher kommt das zweite Argument?
Hast du evt. irgendwelche Leerzeichen in Pfad (welche früher nicht da waren)?

Verfasst: 26. November 2009 11:42
von spatro
Nein, ich habe ja an den Pfadangaben nichts geändert und im Dateinamen der neuen Headerfiles sind auch keine Leerzeichen. Gibt es eine Möglichkeit sich den Befehl, der ausgeführt wird anzeigen zu lassen, bzw. wird das irgendwo mitgelogt?

Verfasst: 26. November 2009 12:03
von MiKla
Geh mit Deiner rechten Maustaste auf das Header-File und wähle Eigenschaften->Benutzerdef.Buildschritt->Allgemein!!!

Michael

Verfasst: 26. November 2009 12:15
von spatro
Hab die Log File schon gefunden, mal schaun, vielleicht steht was drin, was mir weiterhilft.
Ich versuche mal die wichtigsten Einträge zu extrahieren und dann evtl. hier zu posten.

Verfasst: 26. November 2009 13:33
von spatro
Vielen Dank für den Tipp, leider hatte ihn nicht mehr gesehen. Der Fehler lag aber genau an der Stelle. Aus irgendeinem Grund waren hier ein paar zusätzliche parameter eingefügt, die den Fehler verursachten. Hab aber nicht gewußt, dass man mit der Rechten Maustaste die Builcommands manuell festlegen kann. Ich habe die Projektdateien mit dem Editor direkt verändert.

Auf jeden Fall geht es jetzt wieder.