qmake spinnt --> nimmt dateien doppelt

Verschiedenes zu Qt
MASTER-Tim
Beiträge: 12
Registriert: 15. August 2005 17:52
Wohnort: Berlin
Kontaktdaten:

qmake spinnt --> nimmt dateien doppelt

Beitrag von MASTER-Tim »

Hi,


ich habe ein Projekt erstellt (windows)
folgende Dateien gehören dazu:

/main.cpp
/abc/Mainwindow/mainwindow.cpp
/abc/Mainwindow/mainwindow.h

wenn ich jetzt qmake -project ausführ (und qmake mach, um die makedatei zu erstellen), so befindet sich die datei mainwindow.cpp doppelt in der makedatei:

SOURCES = \main.cpp \
\abc\Mainwindow\mainwindow.cpp \
\abc\Mainwindow\mainwindow.cpp
OBJECTS = debug\main.o \
debug\mainwindow.o \
debug\mainwindow.o
wenn ich das kompilier, kommen natürlich fehler :(

wie kann ich das problem umgehen...?


Danke,


Tim
Zuletzt geändert von MASTER-Tim am 15. August 2005 18:35, insgesamt 2-mal geändert.
MASTER-Tim
Beiträge: 12
Registriert: 15. August 2005 17:52
Wohnort: Berlin
Kontaktdaten:

Beitrag von MASTER-Tim »

Hi,


ich hab die datei mainwindow.cpp mal in Cmainwindow.cpp umbenannt und es geht jetzt... komisch


EDIT:

wenn ich in der datei Cmainwindow.h folgendes tuh:
#include "Cmainwindow.h"
dann ist es doppelt in der makedatei...



das heißt, ich kann die header datei nicht includen :((

Tim
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

woher kommen die backslashes? kann sein das qmake die falsch interpretiert?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
MASTER-Tim
Beiträge: 12
Registriert: 15. August 2005 17:52
Wohnort: Berlin
Kontaktdaten:

Beitrag von MASTER-Tim »

Hi,

ka
jetzt sind in den pfaden nur backslashes:
SOURCES = Code\main.cpp \
Code\abc\mainwindow\Cmainwindow.cpp \
Code\abc\mainwindow\Cmainwindow.cpp
OBJECTS = debug\main.o \
debug\Cmainwindow.o \
debug\Cmainwindow.o

Tim
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich würde mal versuchen die cpp - Datei zu entleeren - d.h. immer etwas daraus löschen und qmake -project aufrufen bis sie nur noch einmal in der pro-Datei erscheint. Hast du evtl. ein Q_OBJECT in der cpp definiert?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
MASTER-Tim
Beiträge: 12
Registriert: 15. August 2005 17:52
Wohnort: Berlin
Kontaktdaten:

Beitrag von MASTER-Tim »

Hi,


also, ich glaube, ich bin hinter das schema gekommen


wenn ich eine cpp datei mit dem namen $name.cpp habe und diese die datei $name.h included, ist es doppelt in der makefile erhalten .oO

bei include $nameH.h gehts (oder etwas anderes)

Tim
taki
Beiträge: 30
Registriert: 8. Februar 2005 15:52
Wohnort: Berlin

Beitrag von taki »

Was Du brauchst ist so etwas in der Headerdatei:

Code: Alles auswählen

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
Das müsste helfen.
taki
Beiträge: 30
Registriert: 8. Februar 2005 15:52
Wohnort: Berlin

Beitrag von taki »

Was Du brauchst ist so etwas in der Headerdatei:

Code: Alles auswählen

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
Das müsste helfen.
MASTER-Tim
Beiträge: 12
Registriert: 15. August 2005 17:52
Wohnort: Berlin
Kontaktdaten:

Beitrag von MASTER-Tim »

Hi,


bringt nix :)


TIm
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Kannst du mal deinen Code posten? Eventuell schon in einer abgespckten Version in der der Fehler immer noch auftritt.
Das mit den #ifndef usw. ist nicht nötig und wird schon gar nicht von qmake ausgewertet.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
MASTER-Tim
Beiträge: 12
Registriert: 15. August 2005 17:52
Wohnort: Berlin
Kontaktdaten:

Beitrag von MASTER-Tim »

Hi,

es gibt 3 Dateien

main.cpp hat geschrieben: #include <stdio.h>

#include "QApplication.h"

#include "mainwindow.h"

int main(int argc, char *argv[])
{

return 0;

}
mainwindow.cpp hat geschrieben: #include "mainwindow.h"

Cmainwindow::Cmainwindow() : QWidget(0, 0)
{

}
mainwindow.h hat geschrieben: #ifndef _MAINWINDOW_H_
#define _MAINWINDOW_H_

#include <QMainWindow>
#include <QWidget>
#include <QPushButton>
#include <QMessageBox>

class Cmainwindow : public QWidget
{
Q_OBJECT
private:

public:
Cmainwindow();
};



#endif //_MAINWINDOW_H_

so, alle 3 dateien sind in einem Ordner sagen wir x:/Code/

die qmake führe ich immer unter x:/ aus, er durchsucht ja die unterordner... dann wird es doppelt eingetragen, aber wenn die dateien ALLE in dem ordner sind, wo qmake ausgeführt wird, ist es alles nur einmal eingetragen... total komisch
dies kann ich aber mit dem include und anderen HeaderFileNamen umgehen (wie oben beschrieben)


Tim
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich werde es mir heute abend mal anschauen. Eventuell findest Du ja schon was raus wenn Du qmake mit der Option '-d' ausführst. Am besten mittels 'qmake -project -d > temp.txt 2>&1' die Ausgabe in eine Datei umleiten und dann mal schauen was qmake macht.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
MASTER-Tim
Beiträge: 12
Registriert: 15. August 2005 17:52
Wohnort: Berlin
Kontaktdaten:

Beitrag von MASTER-Tim »

Hi,


DEBUG 1: SOURCES === Code/main.cpp :: Code/qt/mainwindow.cpp :: Code\qt\mainwindow.cpp

:\


Tim
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Es passiert immer wenn du qmake einen PFad mit angibst. Ohne PFad funktioniert es:

Code: Alles auswählen

D:\qt-3.3\testcase\tmp>qmake -project -d d:\qt-3.3\testcase\tmp
DEBUG 1: DEPENDPATH === d:\qt-3.3\testcase\tmp :: Code :: d:\qt-3.3\testcase\tmp
\Code
DEBUG 1: HEADERS === Code\mainwindow.h :: d:\qt-3.3\testcase\tmp\Code\mainwindow
.h
DEBUG 1: INCLUDEPATH === . :: Code
DEBUG 1: QMAKE_MAKEFILE === D:/qt-3.3/testcase/tmp\tmp.pro
DEBUG 1: SOURCES === Code\main.cpp :: Code\mainwindow.cpp :: d:\qt-3.3\testcase\
tmp\Code\main.cpp :: d:\qt-3.3\testcase\tmp\Code\mainwindow.cpp
DEBUG 1: TEMPLATE_ASSIGN === app

D:\qt-3.3\testcase\tmp>qmake -project -d
DEBUG 1: DEPENDPATH === Code
DEBUG 1: HEADERS === Code\mainwindow.h
DEBUG 1: INCLUDEPATH === . :: Code
DEBUG 1: QMAKE_MAKEFILE === D:/qt-3.3/testcase/tmp\tmp.pro
DEBUG 1: SOURCES === Code\main.cpp :: Code\mainwindow.cpp
DEBUG 1: TEMPLATE_ASSIGN === app
Der Pfad ist ja eigentlich auch unnötig. Im Grunde ist es wohl ein Fehler beim Konvertieren der Pfadangaben. Mal schauen ob qmake/qt4 auch das Problem hat...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
MASTER-Tim
Beiträge: 12
Registriert: 15. August 2005 17:52
Wohnort: Berlin
Kontaktdaten:

Beitrag von MASTER-Tim »

Hi,


eh ja, wir reden von qmake von QT4 :>, sry dass ich das noch nicht gesagt hab

2. gebe ich bei qmake -project keinen pfad an


Tim
Antworten