如何手动 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
我正在尝试在我的 .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