Problem mit moc: Too many input files specified

Verschiedenes zu Qt
Antworten
spatro
Beiträge: 46
Registriert: 18. Juni 2008 10:54

Problem mit moc: Too many input files specified

Beitrag 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?
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

zeig mal die klassendefinition
spatro
Beiträge: 46
Registriert: 18. Juni 2008 10:54

Beitrag 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.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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?
spatro
Beiträge: 46
Registriert: 18. Juni 2008 10:54

Beitrag 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.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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)?
spatro
Beiträge: 46
Registriert: 18. Juni 2008 10:54

Beitrag 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?
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag von MiKla »

Geh mit Deiner rechten Maustaste auf das Header-File und wähle Eigenschaften->Benutzerdef.Buildschritt->Allgemein!!!

Michael
spatro
Beiträge: 46
Registriert: 18. Juni 2008 10:54

Beitrag 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.
spatro
Beiträge: 46
Registriert: 18. Juni 2008 10:54

Beitrag 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.
Antworten