我注意到qmake将所有C ++预处理程序标志传递给moc实用程序。我在一个文件上尝试了没有这些标志的moc,它产生了相同的结果。我的问题是:是否会出现moc需要这些标志的情况?
答案 0 :(得分:2)
moc创建一个CPP文件,用于管理类的SLOTS和SIGNALS。
如果其中任何一个属于预处理器规则,MOC需要了解它。 例如:
class A {
Q_OBJECT
public slots:
#ifdef ENABLE_SLOT1
void slot1();
#endif;
void slot2();
};
如果你运行没有“-DENABLE_SLOT1”参数的moc,那么生成的CPP文件将不知道它需要生成代码处理slot1()。