如何在项目生成文件中添加 Qt 类



我有一个通过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

和 发射器.cpp #include "发射器.h"

Emitter::Emitter()
{
}

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

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

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

必须对生成文件执行哪些操作才能使其生成?

你应该添加

cpp 文件S到您的制作文件。但请注意 - 在你应该用 MOC 从你的头制作另一个 cpp 之前(因为你使用 Q_OBJECT)

例如

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文件添加到"对象"部分。

  • 您应该为 moc 和编译添加不同的 Qt 路径(有关 Qt 标头的信息)

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

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

最新更新