我的带有 Q_OBJECT 的 QtExample.h 有一个#ifdef _FEATURE。 #ifdef 包装了该类。在项目 -> C++ -> 预处理器 -> 预处理器定义中,指定了这个 _FEATURE。当 moc.exe 在 Visual Studio 构建期间运行时,我的 moc_QtExample.cpp 生成为空,就好像 moc.exe 没有看到定义一样。但是当我在命令行中运行 moc.exe 并手动指定 moc.exe -D _FEATURE QtExample.h -o moc_QtExample.cpp 时,会正确生成 moc_QtExample.cpp 文件。据我所知,带有 CMake 的 Visual Studio 可能会起作用。但我在 Qt/MsBuild 中特别需要它。
我尝试过:
解决了。 自定义构建非常适合我的案例。标准 QtMoc 与 qt 类的 *.h 中的 #ifdef 不能很好地配合。