为项目树外部的仅标头类生成moc文件

问题描述 投票:1回答:1

我仅使用继承QObject类并使用Q_OBJECT宏的头文件定义了一些类。它们被放置在我PC上的某个文件夹中。我想在我的qt项目中包括这些类。

我已经以这种方式编写了一个.pri文件(位于这些类的同一文件夹中:

INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD

在我的.pro项目文件中,包括.pri(使用include()命令),并且可以导入标头。问题是在编译过程中,我有一些与QMetaObject相关的链接错误,例如

Plc.obj:-1: error: LNK2001: external symbol "public: virtual struct QMetaObject const * __cdecl Conveyor::metaObject(void)const " (?metaObject@Conveyor@@UEBAPEBUQMetaObject@@XZ) not resolved

我认为问题与以下事实有关:qmake不会为每个类生成moc文件,它仅包含标头路径。实际上,如果我从这些类中删除了Q_OBJECT宏,则可以成功编译该项目。

在qmake中有一种方法可以告诉它,这些头必须生成moc文件吗?我想避免为这些类创建库或项目。还是其他解决方案?

qt qobject moc
1个回答
0
投票

我终于找到了解决方法。

我只是在.pri文件末尾添加了HEADER命令。现在,编译器将扫描标头并创建moc文件。 ``

我的更新.pri文件是:

INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD

HEADERS += \
    $$PWD/MyClass1.h \
    $$PWD/MyClass2.h
© www.soinside.com 2019 - 2024. All rights reserved.