2

我注意到 qmake 将所有 C++ 预处理器标志传递给 moc 实用程序。我在一个文件上尝试了没有这些标志的 moc,它产生了相同的结果。我的问题是:在某些情况下 moc 会需要这些标志吗?

4

1 回答 1

2

moc 创建一个管理类的 SLOTS 和 SIGNALS 的 CPP 文件。

如果其中任何一个在预处理器规则下,MOC 需要知道它。例如:

class A {
 Q_OBJECT
public slots:
#ifdef ENABLE_SLOT1
  void slot1();
#endif;
  void slot2();
};

如果您在没有“-DENABLE_SLOT1”参数的情况下运行 moc,则生成的 CPP 文件将不知道它需要生成代码处理 slot1()。

于 2012-11-07T11:21:54.423 回答