LINUX.ORG.RU

Проблемма с инклудами!!!


0

0

Вообщем описать сложно, но попробую.

Значит так, жил был у бабушки серенький... эээ это немного не от туда :)) Так вот был класс kmmsWindow : public QWidget

#ifndef KMMSWINDOW_H
#define KMMSWINDOW_H

#include <kmmsinc.h>

class kmmsWindow : public QWidget
{
Q_OBJECT

public:

kmmsWindow(int type, int flags);
~kmmsWindow();

void mousePressEvent( QMouseEvent *);
void mouseMoveEvent( QMouseEvent *);

int type;

private:
QPoint clickPos;
};

#endif

и было созданно в классе kmms

#ifndef _KMMS_H_
#define _KMMS_H_

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <front/kmmswindow.h>
#include <front/kmmsscin.h>
#include <kmmsconfig.h>

class kmms
{

public:
kmms();
virtual ~kmms();

void init();
QWidget* getMainWindow();

kmmsScin *scin;
kmmsConfig *config;

kmmsWindow *mainw;
kmmsWindow *controlw;
kmmsWindow *playlistw;
};

#endif // _KMMS_H_


три обьекта такго класса, но решил я пойти дальше и создал три производных класс kmmsMainWindow : public kmmsWindow ... и.т.д.

kmmsMainWindow
kmmsControlWindow
kmmsPlaylistWindow

такого содержания

#ifndef KMMSMAINWINDOW_H
#define KMMSMAINWINDOW_H

#include <kmmswindow.h>

class kmmsMainWindow : public kmmsWindow
{

public:
kmmsMainWindow(int type, int flags);
~kmmsMainWindow();
};

#endif


Когда был только один kmmsWindow всё было хорошо и всё собиралось, но когда я добывил производные, то хидер kmms стал выглядеть так

#ifndef _KMMS_H_
#define _KMMS_H_

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <front/kmmsmainwindow.h>
#include <front/kmmscontrolwindow.h>
#include <front/kmmsplaylistwindow.h>
#include <front/kmmsoutwindow.h>
#include <front/kmmsscin.h>
#include <kmmsconfig.h>

class kmms
{

public:
kmms();
virtual ~kmms();

void init();
QWidget* getMainWindow();

kmmsScin *scin;
kmmsConfig *config;

kmmsMainWindow *mainw;
kmmsControlWindow *controlw;
kmmsPlaylistWindow *playlistw;
};

#endif // _KMMS_H_

т.е. у трёх обьектов поменялись соответственно классы на производные и прога перестала собираться и вылазит вот что

★★★★★

cd '/home/alexandr/Documents/Coding/C++/MyProjects/kmms/debug' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -k -j1
gmake all-recursive
Making all in doc
Making all in .
gmake[3]: Цель `all-am' не требует выполнения команд.
Making all in en
gmake[3]: Цель `all' не требует выполнения команд.
Making all in po
gmake[2]: Цель `all' не требует выполнения команд.
Making all in src
Making all in front
gmake[3]: Цель `all' не требует выполнения команд.
Making all in plugins
Making all in input
gmake[4]: Цель `all' не требует выполнения команд.
Making all in output
gmake[4]: Цель `all' не требует выполнения команд.
Making all in other
gmake[4]: Цель `all' не требует выполнения команд.
gmake[4]: Цель `all-am' не требует выполнения команд.
source='/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/main.cpp' object='main.o' libtool=no depfile='.deps/main.Po' tmpdepfile='.deps/main.TPo' depmode=gcc3 /bin/sh /home/alexandr/Documents/Coding/C++/MyProjects/kmms/admin/depcomp g++ -DHAVE_CONFIG_H -I. -I/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src -I.. -I/usr/kde/3.3/include -I/usr/qt/3/include -I. -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -W -Wpointer-arith -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -g3 -fno-inline -O0 -g3 -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common -c -o main.o `test -f '/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/main.cpp' || echo '/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/'`/home/alexandr/Docume nts/Coding/C++/MyProjects/kmms/src/main.cpp
In file included from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.h:29,
from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/main.cpp:22:
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/front/kmmsmainwindow.h:2 3:24: kmmswindow.h: No such file or directory
In file included from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.h:29,
from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/main.cpp:22:
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/front/kmmsmainwindow.h:2 9: error: expected class-name before '{' token
In file included from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.h:30,
from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/main.cpp:22:
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/front/kmmscontrolwindow. h:29: error: expected class-name before '{' token
In file included from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.h:31,
from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/main.cpp:22:
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/front/kmmsplaylistwindow .h:29: error: expected class-name before '{' token
In file included from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.h:32,
from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/main.cpp:22:
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/front/kmmsoutwindow.h:29 : error: expected class-name before '{' token
gmake[3]: *** [main.o] Ошибка 1
source='/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp' object='kmms.o' libtool=no depfile='.deps/kmms.Po' tmpdepfile='.deps/kmms.TPo' depmode=gcc3 /bin/sh /home/alexandr/Documents/Coding/C++/MyProjects/kmms/admin/depcomp g++ -DHAVE_CONFIG_H -I. -I/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src -I.. -I/usr/kde/3.3/include -I/usr/qt/3/include -I. -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -W -Wpointer-arith -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -g3 -fno-inline -O0 -g3 -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common -c -o kmms.o `test -f '/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp' || echo '/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/'`/home/alexandr/Docume nts/Coding/C++/MyProjects/kmms/src/kmms.cpp
In file included from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.h:29,
from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:22:
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/front/kmmsmainwindow.h:2 3:24: kmmswindow.h: No such file or directory
In file included from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.h:29,
from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:22:
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/front/kmmsmainwindow.h:2 9: error: expected class-name before '{' token
In file included from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.h:30,
from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:22:
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/front/kmmscontrolwindow. h:29: error: expected class-name before '{' token
In file included from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.h:31,
from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:22:
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/front/kmmsplaylistwindow .h:29: error: expected class-name before '{' token
In file included from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.h:32,
from /home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:22:
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/front/kmmsoutwindow.h:29 : error: expected class-name before '{' token
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp: In member function `void kmms::init()':
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:40: error: 'class kmmsMainWindow' has no member named 'resize'
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:41: error: 'class kmmsControlWindow' has no member named 'resize'
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:42: error: 'class kmmsPlaylistWindow' has no member named 'resize'
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:44: error: 'class kmmsMainWindow' has no member named 'move'
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:45: error: 'class kmmsControlWindow' has no member named 'move'
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:45: error: 'class kmmsMainWindow' has no member named 'height'
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:46: error: 'class kmmsPlaylistWindow' has no member named 'move'
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:46: error: 'class kmmsMainWindow' has no member named 'height'
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:46: error: 'class kmmsControlWindow' has no member named 'height'
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:48: error: 'class kmmsMainWindow' has no member named 'show'
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:49: error: 'class kmmsControlWindow' has no member named 'show'
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:50: error: 'class kmmsPlaylistWindow' has no member named 'show'
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp: In member function `QWidget* kmms::getMainWindow()':
/home/alexandr/Documents/Coding/C++/MyProjects/kmms/src/kmms.cpp:55: error: cannot convert `kmmsMainWindow*' to `QWidget*' in return
gmake[3]: *** [kmms.o] Ошибка 1
gmake[3]: Цель `all-am' не была пересобрана из-за ошибок.
gmake[2]: *** [all-recursive] Ошибка 1
<br />
gmake[2]: Цель `all' не была пересобрана из-за ошибок.
gmake[1]: *** [all-recursive] Ошибка 1
<br />
gmake: *** [all] Ошибка 2
*** Завершено с кодом: 2 ***

cyclon ★★★★★
() автор топика
Ответ на: комментарий от cyclon

При этом все цпп и хидеры там где надо:

alexandr@cyclon ~/Documents/Coding/C++/MyProjects/kmms/src $ ls
front hi32-app-kmms.png kmmsconfig.h kmms.desktop kmmsinc.h Makefile.am plugins
hi16-app-kmms.png kmmsconfig.cpp kmms.cpp kmms.h main.cpp Makefile.in
alexandr@cyclon ~/Documents/Coding/C++/MyProjects/kmms/src/front $ ls
kmmscontrolwindow.cpp kmmsmainwindow.cpp kmmsoutwindow.h kmmsscin.cpp kmmswindow.h
kmmscontrolwindow.h kmmsmainwindow.h kmmsplaylistwindow.cpp kmmsscin.h Makefile.am
kmmsinc.h kmmsoutwindow.cpp kmmsplaylistwindow.h kmmswindow.cpp Makefile.in

Может кто знает что не так?? Работа встала, ПОМГИТЕ!!!

Заранее спасибо!!!

cyclon ★★★★★
() автор топика
Ответ на: комментарий от cyclon

Он же тебе сказал - не могу найти kmmsmainwindow.h. Нужно было к ключам сборки добавить что-то вроде -I. -I../front

anonymous
()
Ответ на: комментарий от anonymous

Я знаю что он говорит, но проблемма в том, что kmmswindow.h лежит в том же каталоге что и kmmsmainwindow.h но вот только первый он видит а второй нет и при этом без всяких -I

cyclon ★★★★★
() автор топика
Ответ на: комментарий от cyclon

Так вот путь проблеммы, cpp находящиеся в front собираются без проблемм, проблемма в kmms.h которая находится уровнем выше т.е. в ../ относительно front, вообщем в папке где лежит kmms.h лежит папка front, так вот, при обработке #include <front/kmmsmainwindow.h> в kmms.h и происходит глюк, т.е.

#include <front/kmmsmainwindow.h> ----> #include <kmmswindow.h> а вот последняя и не видна из kmms.h

вроде как то так. Но вот -I front/ прописанная в свойствах проекта не помогает :(

cyclon ★★★★★
() автор топика

возможно я не всё понял, но не пробовали ли вы использовать вместо

#include <...>

#include "..."

corpus
()

#include "front/kmmsmainwindow.h" #include "front/kmmscontrolwindow.h" #include "front/kmmsplaylistwindow.h" #include "front/kmmsoutwindow.h" #include "front/kmmsscin.h"

или

-I. (но не уверен)

olegk ★★
()
Ответ на: комментарий от olegk

ГЫЫЫ спасибо, дурацкая привычка писать <> вместо "" меня собсно и наколола, а чё то попоробовать "" в голову не приходило забыл совсем, ещё раз сенкс %)))

cyclon ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.