如何在项目makefile中添加Qt类?

时间:2013-09-11 12:52:43

标签: c++ qt makefile

我有一个通过Makefile构建的大项目。我不能更改它的.pro文件。 现在我正在尝试在项目中使用Qt,所以我创建了这些文件:

//Emitter.h
#ifndef EMITTER_H
#define EMITTER_H

#include <QObject>
#include <QDBusInterface>
#include <QDBusAbstractAdaptor>
#include <QDBusVariant>

class Emitter
{
    Q_OBJECT
public:
    Emitter();

private:
    QDBusInterface * m_interface;
    QString m_interfaceName;
};

#endif // EMITTER_H

和     //Emitter.cpp     #include“Emitter.h”

Emitter::Emitter()
{
}

然后我将Emitter.o添加到MakeFile中的*.o列表中。 如果我尝试构建我收到错误:

Emitter.h:4: error: QObject: No such file or directory

这是正常的,因为Makefile目前不知道Qt标题。

Makefile必须做些什么来构建它?

2 个答案:

答案 0 :(得分:1)

你应该添加

cpp fileS到你的make文件。但是请注意 - 在您使用MOC从头部开始另一个cpp之前(因为您使用Q_OBJECT)

e.g。

moc_emitter.cpp: 
   /PATH/TO/moc $(DEFINES) $(INCPATH) emitter.h -o moc_emitter.cpp

然后.o部分

moc_emitter.cpp.o: moc_emitter.cpp
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_emitter.o moc_emitter.cpp
emitter.o: emitter.cpp
     $(CXX) -c $(CXXFLAGS) $(INCPATH) -o emitter.o emitter.cpp

只需将新的.0文件添加到OBJECTS部分。

  • 你应该为moc和编译添加不同的Qt PATH(关于Qt标题的信息)

答案 1 :(得分:0)

将qt include文件夹添加到包含列表

您还需要在emmitter.h上运行moc并编译生成的文件