如何手动将 Qt .rep 复制到 .h,然后将它们 moc 到 .cpp
Posted
技术标签:
【中文标题】如何手动将 Qt .rep 复制到 .h,然后将它们 moc 到 .cpp【英文标题】:How to manually repc Qt .rep to .h and then moc them to .cpp 【发布时间】:2019-02-15 23:34:42 【问题描述】:我试图在我的.rep
文件上手动调用repc
,然后在头输出文件上运行moc
。repc
运行成功,但moc
随机抱怨一个
在 '(' 处解析错误
在Q_CLASSINFO
声明之后。以前有人见过这个问题吗?
示例:
remoteminimal.rep
class RemoteMinimal
SIGNAL(sendData(const QString &, const QString &));
SLOT(void printData(const QString &));
SLOT(void process(const QString &, const QString &));
SLOT(void triggerSendData());
;
做
repc -i rep remoteminimal.rep -o replica rep_min_test.h
然后
moc -o moc_rep_min_test.cpp rep_min_test.h
你会得到以下错误:
rep_min_test.h:20:“(”处的解析错误
【问题讨论】:
除了提供有问题的 .rep 示例之外,您还可以详细解释您使用的步骤 上面添加的例子 我建议在您的问题中发布代码,而不是依赖外部资源,例如,我可以在某个时候删除我的存储库,您的问题可能会变得无法使用 【参考方案1】:问题是你没有链接 Qt,所以 MOC 没有找到一些定义。对于这些情况,我更喜欢分析 qmake 生成的代码,并在以下片段中:
/usr/bin/moc ... rep_remoteminimal_replica.h -o moc_rep_remoteminimal_replica.cpp -I /usr/include/qt -I /usr/include/qt/QtRemoteObjects
你看到链接了/usr/include/qt
:
moc -I/usr/include/qt rep_min_test.h -o moc_rep_min_test.cpp
【讨论】:
太好了,谢谢。 moc 是否存在抱怨 lib 无法访问的“调试”或详细模式? 不,只是通过擦除代码来分析 :-) 并分析什么是必要的,然后只是分析为什么它是必要的以上是关于如何手动将 Qt .rep 复制到 .h,然后将它们 moc 到 .cpp的主要内容,如果未能解决你的问题,请参考以下文章
cmake qt5_generate_repc() 将 rep 标头放在 CMAKE_CURRENT_BINARY_DIR