2
我注意到qmake将所有C++预处理器标志传递给moc实用程序。我试图在一个文件中没有这些标志的moc,并产生相同的结果。我的问题是:会不会有moc需要这些标志的情况?Qt的moc预处理器需要所有C++预处理器标志
我注意到qmake将所有C++预处理器标志传递给moc实用程序。我试图在一个文件中没有这些标志的moc,并产生相同的结果。我的问题是:会不会有moc需要这些标志的情况?Qt的moc预处理器需要所有C++预处理器标志
moc创建一个CPP文件来管理该类的SLOTS和SIGNAL。
如果其中任何一个都处于预处理规则之下,MOC需要了解它。 例如:
class A {
Q_OBJECT
public slots:
#ifdef ENABLE_SLOT1
void slot1();
#endif;
void slot2();
};
,如果你没有一个“-DENABLE_SLOT1”参数运行中心接着将生成的CPP文件不会有任何想法,这需要生成代码处理SLOT1()。
你的意思是'-D ...'定义,还是'CXXFLAGS'? – leemes
这是一个例子:“moc -DCOMPONENT_LIBRARIESDIR =”\“/ usr/local /.../ lib \”“-DSYSCONF_DATADIR =”\“/ usr/local /.../ etc \”“-DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/qt-4.8.0/mkspecs/linux-g ++ -I ../../ lng-ide -I/usr/local/qt-4.8.0/include/QtCore -I/usr/local/qt-4.8.0/include/QtGui -I/usr/local/qt-4.8.0/include -I/usr/local /.../ include -I/usr/local/... include -I/usr/local/... include -I/usr/local/... include -I。-I。-I ../../ lng-ide -I ../diagnosis_viewer.h -o moc_diagnosis_viewer.cpp“&& ”moc ../diagnosis_viewer.h -o moc_diagnosis_viewer.cpp“产生了相同的结果。 – major4x
一方面,预处理宏会影响头文件的结果代码,所以moc当然需要它们。但另一方面,我试图让我的类定义依赖于预处理器宏的所有内容都失败了,例如,如果您为某些插槽预处理器宏命名,则moc无法解析它们。这有点讽刺意味,因为moc似乎*不*看那些定义... – leemes