如何手动 repc Qt .rep 到 .h 然后将它们 moc 到 .cpp

How to manually repc Qt .rep to .h and then moc them to .cpp

我正在尝试在我的 .rep 文件上手动调用 repc,然后在 header 输出文件上手动调用 运行 moc
repc 运行成功,但 moc 随机抱怨一个

parse error at '('

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: Parse error at "("

问题是您没有链接 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