C++ 使用Makefile构建qt类时链接失败

C++ 使用Makefile构建qt类时链接失败,c++,qt,makefile,C++,Qt,Makefile,我正在尝试将这样的类添加到项目中^ //Emitter.h #ifndef EMITTER_H #define EMITTER_H #include <QObject> #include <QDBusInterface> #include <QDBusAbstractAdaptor> #include <QDBusVariant> class Emitter:public QObject { Q_OBJECT public: E

我正在尝试将这样的类添加到项目中^

//Emitter.h
#ifndef EMITTER_H
#define EMITTER_H

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

class Emitter:public QObject
{
    Q_OBJECT
public:
    Emitter();

private:
    QDBusInterface * m_interface;
    QString m_interfaceName;
};

#endif // EMITTER_H
我使用moc收到的Cesmeitter.moc文件如下:

moc CESMEmitter.h > CESMEmitter.moc
在尝试使用Makefile构建之后,我收到一个错误,表示找不到Qt包含文件

所以我添加了变量

QT_STUFF = -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtDBus -I/usr/include/qt4 -L/usr/lib/x86_64-linux-gnu -lQtGui -lQtCore -lQtDBus -lpthread 
然后应用它

找到了包含文件,但出现了其他错误:

error: undefined reference to `QObject::QObject(QObject*)'
error: undefined reference to `qt_assert(char const*, char const*, int)'
error: undefined reference to `QString::shared_null'
error: undefined reference to `QString::shared_null'

任何人都可以提出建议吗?

尽管它可能碰巧起作用,但您不应该只有一个
QT\u STUFF
变量。编译(使用
-I
-D
)和链接(使用
-L/-L
)需要单独的一个。您还可能缺少编译所需的定义。Qt 4需要

-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED
并且对于您使用的所有Qt库都类似。Qt 5需要

-DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB
您还确定链接器没有抱怨缺少Qt库吗


至少让qmake生成初始的Makefile,然后进行调整可能会更容易。

将qt-lib文件夹添加到LIBS:
LIBS+=“-l/path/to/qt/lib”
我添加了它,qt\u中的-l/usr/lib/x86\u 64-linux-gnu也会传递到链接器吗?是的,因为整个qt\u内容都传递了Kopalvich:为什么不使用LIBS?另外,您不应该使用“moc CESMEmitter.h>CESMEmitter.moc”,但您可以使用moc的输出选项。。。
-DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB