我正在使用CMake的AUTOMOC:
set(CMAKE_AUTOMOC ON)
我正在从一个工作文件中分解出一个类:
#include <QtWidgets>
#include "workingstuff.h"
因式分解的类没有任何GUI代码,实际上只在其前向定义中使用了QObject和QString。所以我想我会把破碎文件的包含减少到:
#include <QObject>
#include <QString>
#include "workingstuff.h"
尽管其他地方的工作正常,它开始出现非常随机的错误。在构建newfile.cpp
或newfile.h
时,仅当将workstuff构建为来自moc_newfile.cpp
的包含时,错误不在第一个定义的文件顶部,而是在中间...像:
#ifndef FALSE
#define FALSE 0 // "expected unqualified-id before numeric constant"
#define TRUE (!0)
#endif
(这是一个难题,因为很难想象在预处理器指令之后处理一行时它会抱怨什么,它只是决定了事物不存在......并将其设置为零。: - /)
由于此消息事后才知道,我已经指出了发现的差异:它可以包括<QtWidgets>
(作为<QString>
和{{1}的替代品)或者另外)。我尝试了其他一些包含,看看它们是否具有相同的神奇效果:<QObject>
和<QThread>
没有,而<QTimer>
则没有。
“workingstuff.h”基本上只是一个普通的C库,碰巧可以像C ++那样构建......没有任何Qt依赖。有什么要求我不知道你需要包含一些与GUI相关的文件的automoc,还是在构建moc时会出现奇怪的错误?