除非添加了特定于GUI的包含文件,否则Qt automoc会发出奇怪的错误

时间:2015-09-25 02:30:57

标签: c++ qt cmake qt5 moc

我正在使用CMake的AUTOMOC:

set(CMAKE_AUTOMOC ON)

我正在从一个工作文件中分解出一个类:

#include <QtWidgets>
#include "workingstuff.h"

因式分解的类没有任何GUI代码,实际上只在其前向定义中使用了QObject和QString。所以我想我会把破碎文件的包含减少到:

#include <QObject>
#include <QString>
#include "workingstuff.h"

尽管其他地方的工作正常,它开始出现非常随机的错误。在构建newfile.cppnewfile.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时会出现奇怪的错误?

0 个答案:

没有答案