Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: ru от Декабрь 14, 2007, 16:19



Название: не создается мок файл
Отправлено: ru от Декабрь 14, 2007, 16:19
собираю библиотеку (не qt)
есть куча срр и h файлов, для одной пары из них moc файл просто не создается,..
кто нить знает, отчего это и как лечится?


Название: Re: не создается мок файл
Отправлено: Mikhail от Декабрь 14, 2007, 16:31
собираю библиотеку (не qt)
есть куча срр и h файлов, для одной пары из них moc файл просто не создается,..
кто нить знает, отчего это и как лечится?

А Q_OBJECT в include файле не забыл?
Вообще то вопрос достаточно аморфный, а мысли здесь не читают.


Название: Re: не создается мок файл
Отправлено: WW от Декабрь 14, 2007, 16:32
А с чего бы он должен создаваться?
moc создает moc.exe из библиотеки Qt,  если видит, что создается QT библиотека и в классе(файле?) указан макрос Q_OBJECT.


Название: Re: не создается мок файл
Отправлено: ru от Декабрь 14, 2007, 16:36
собирающаяся библиотека создана на основе qt, boost, gui библиотек,
ддя других пар cpp и h файлов moc файлы создаются....
то бишь генерятся..
а для этой пары нет.
вот и не понятно, как попросить насильно сгенерить, и вообще непонятно, почему не генерируется moc файл


Название: Re: не создается мок файл
Отправлено: ru от Декабрь 14, 2007, 16:37
А Q_OBJECT в include файле не забыл?


макрос   Q_OBJECT указан


Название: Re: не создается мок файл
Отправлено: burunduk от Декабрь 14, 2007, 16:38
еще можно попробывать вручную написать #include "file.moc"
бывает не может нормально собрать, когда описание класса не в заголовочном файле а в файле реализации


Название: Re: не создается мок файл
Отправлено: WW от Декабрь 14, 2007, 16:42
ддя других пар cpp и h файлов moc файлы создаются....
то бишь генерятся..
а для этой пары нет.
Давай по порядку. Телепатов нет. В этих файлах что? Классы, описания констант, или что другое?
Может они и не должны генериться, а мы тут богу молимся, чтобы дождь пошел....


Название: Re: не создается мок файл
Отправлено: ru от Декабрь 14, 2007, 16:47
именно в этом файле просто создавался виджет с описанием программы и кто это безобразие творил))

нда... произошло чудо - но он создался (не понимаю почему)
спасибо)
бум править это чудо дальше)


Название: Re: не создается мок файл
Отправлено: ru от Декабрь 14, 2007, 17:39
все та же проблема...
при Генерации кода мок файл таки не создается, хотя макрос Q_Object присутствует, кусок h  файла прилагается,
почему он его не создает - не понятно

Код:
#ifndef _SATSTAT_TASKS_CONTVISTASK_H
#define _SATSTAT_TASKS_CONTVISTASK_H

#include <satstat/config.h>

#include <list>

// Сериализация из boost
#include <boost/serialization/access.hpp>
#include <boost/serialization/version.hpp>
#include <boost/serialization/nvp.hpp>
#include <boost/serialization/level.hpp>
#include <boost/serialization/export.hpp>

#include <satstat/constants.h>
#include <satstat/elps_operation.h>
#include <satstat/sph_contour.h>
#include <satstat/math/utils/isoline.h>
#include <satstat/tasks/tasks.h>
#include <satstat/tasks/generalizedtask.h>
#include <satstat/tasks/legendwidget.h>
#include <satstat/tasks/mathtaskproperties.h>




//! Виджет настроек задачи "Области видимости"
class ContVisTaskPropertiesWidget : public MathTaskPropertiesWidget {
  Q_OBJECT

  public:
    //! Конструктор по умолчанию
    ContVisTaskPropertiesWidget();

хотя в аналогичном этому h  файлу мок файл создается :
Код:

#include <satstat/grid.h>
#include <satstat/orbit.h>
#include <satstat/datamanager/datamanager.h>
#include <satstat/math/interpolation/interpolation.h>
#include <satstat/tasks/generalizedtask.h>
#include <satstat/tasks/mathtaskproperties.h>
#include <satstat/tasks/tasks.h>

#include <qwtplot3d/qwt3d_surfaceplot.h>
#include <qwtplot3d/qwt3d_function.h>

// Сериализация из boost
#include <boost/serialization/access.hpp>
#include <boost/serialization/version.hpp>
#include <boost/serialization/nvp.hpp>
#include <boost/serialization/level.hpp>
#include <boost/serialization/export.hpp>
class ExtremumTypeComboBox : public QComboBox {
  Q_OBJECT
  public:
    //! Конструктор
    ExtremumTypeComboBox( EmissivePowerTask* task, QWidget* parent=0 )


Название: Re: не создается мок файл
Отправлено: pastor от Декабрь 14, 2007, 17:46
Какой компиль? Как компилите?


Название: Re: не создается мок файл
Отправлено: ru от Декабрь 14, 2007, 18:06
среда разработки - MSVC 8

устанавливаем debug
и нажимаем build


Название: Re: не создается мок файл
Отправлено: Mikhail от Декабрь 14, 2007, 18:09
все та же проблема...
при Генерации кода мок файл таки не создается, хотя макрос Q_Object присутствует, кусок h  файла прилагается,
почему он его не создает - не понятно

Код:
#ifndef _SATSTAT_TASKS_CONTVISTASK_H
#define _SATSTAT_TASKS_CONTVISTASK_H

#include <satstat/config.h>

#include <list>

// Сериализация из boost
#include <boost/serialization/access.hpp>
#include <boost/serialization/version.hpp>
#include <boost/serialization/nvp.hpp>
#include <boost/serialization/level.hpp>
#include <boost/serialization/export.hpp>

#include <satstat/constants.h>
#include <satstat/elps_operation.h>
#include <satstat/sph_contour.h>
#include <satstat/math/utils/isoline.h>
#include <satstat/tasks/tasks.h>
#include <satstat/tasks/generalizedtask.h>
#include <satstat/tasks/legendwidget.h>
#include <satstat/tasks/mathtaskproperties.h>




//! Виджет настроек задачи "Области видимости"
class ContVisTaskPropertiesWidget : public MathTaskPropertiesWidget {
  Q_OBJECT

  public:
    //! Конструктор по умолчанию
    ContVisTaskPropertiesWidget();

хотя в аналогичном этому h  файлу мок файл создается :
Код:

#include <satstat/grid.h>
#include <satstat/orbit.h>
#include <satstat/datamanager/datamanager.h>
#include <satstat/math/interpolation/interpolation.h>
#include <satstat/tasks/generalizedtask.h>
#include <satstat/tasks/mathtaskproperties.h>
#include <satstat/tasks/tasks.h>

#include <qwtplot3d/qwt3d_surfaceplot.h>
#include <qwtplot3d/qwt3d_function.h>

// Сериализация из boost
#include <boost/serialization/access.hpp>
#include <boost/serialization/version.hpp>
#include <boost/serialization/nvp.hpp>
#include <boost/serialization/level.hpp>
#include <boost/serialization/export.hpp>
class ExtremumTypeComboBox : public QComboBox {
  Q_OBJECT
  public:
    //! Конструктор
    ExtremumTypeComboBox( EmissivePowerTask* task, QWidget* parent=0 )

Вопрос:
MathTaskPropertiesWidget наследуется от QObject или нет?


Название: Re: не создается мок файл
Отправлено: ru от Декабрь 14, 2007, 18:31
Код:
class MathTaskPropertiesWidget : public QWidget {

наследуется от QWidget


Название: Re: не создается мок файл
Отправлено: Mikhail от Декабрь 14, 2007, 19:00
Код:
class MathTaskPropertiesWidget : public QWidget {

наследуется от QWidget

А в проекте этот влючаемый файл присутствует?
ЕСли присутствует посмотри врмя изменения его и Makefile.
Попробую очистить проект, удалить все Makefile.*, выполнить qmake и по новой откомпилироать проект.


Название: Re: не создается мок файл
Отправлено: pastor от Декабрь 15, 2007, 00:03
среда разработки - MSVC 8

устанавливаем debug
и нажимаем build

пробуем перегенерить проетк (qmake -t vcapp и делее собрать; или qmake -> nmake)


Название: Re: не создается мок файл
Отправлено: Dodge от Декабрь 15, 2007, 00:59
пробуем перегенерить проетк (qmake -t vcapp и делее собрать; или qmake -> nmake)
+1
есть трабла, если пишешь файл(без "заветного" макроса Q_OBJECT), собираешь проект, все ок. Потом дописываешь "заветный" макрос, qmake - не отрабатывается при компиляции( логично, сам проектник не менялся), соответственно мэйк файл не меняется, и в нем отсутствует запись о том, что еще и этот файл нада моку сунуть. Иногда приходится тереть мэйк файлы вручную, чтоб заработало... на mingw покрайней мере.