我有一个通过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必须做些什么来构建它?
答案 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部分。
答案 1 :(得分:0)
将qt include
文件夹添加到包含列表
您还需要在emmitter.h上运行moc
并编译生成的文件