将参数从 qmake 传递到每个 header 的 moc

Passing arguments from qmake to moc per header

我希望能够从 qmake 项目向 moc 编译器传递参数,但仅限于特定文件。

例如,在某些 .pro 文件中:

HEADER += foo.h \
          bar.h \
          baz.h

我想将 -ffoo_extra.h 传递给 foo.h,-fbar_extra.h 传递给 bar.h,而不要传递给 baz.h

This answer 建议使用 QMAKE_MOC 变量,但这会同时影响所有 header。类似但针对单个 header 文件的东西是理想的。

-f 参数向生成的输出添加一个包含。您可以通过利用 Q_MOC_RUN 宏来实现相同的目的。它是 even documented - 连同命令行选项,不少于:)

// foo.h
#ifdef Q_MOC_RUN
#include "foo_extra.h"
#endif
...

// bar.h
#ifdef Q_MOC_RUN
#include "bar_extra.h"
#endif
...