在旧版非qmake版本中处理Q_OBJECT?

时间:2019-01-19 00:28:37

标签: c++ qt makefile

我有一个不使用qmake的旧版本,但我想添加QUdpSocket并将其与信号和插槽连接。我有一个使用Q_OBJECT的类。如果我希望信号和插槽可用,但我没有使用qmake,该怎么做才能正确处理Q_OBJECT指令。

是否可以将原始myclass.h文件替换为“ $ moc myclass.h”的输出?还是除了原始文件以外的输出?

这可能是新的make指令吗?

m_myclass.h : myclass.h
    moc myclass.h > m_myclass.h

1 个答案:

答案 0 :(得分:1)

MOC实际上会生成.cpp文件,并将其与项目的其余部分一起编译;因此,它将类似于:

moc_myclass.cpp: myclass.h
    moc myclass.h > moc_myclass.cpp

moc_myclass.o: moc_myclass.cpp
    g++ ${CFLAGS} moc_myclass.cpp -o moc_myclass.o // whatever

,然后将moc_myclass.o添加到最终可执行文件的链接步骤。