我需要在代码中包含以下标头:
#include <5.4.1/QtGui/private/qzipwriter_p.h>
问题是,我们正在其他Qt版本(例如5.4.2或5.5.x)上对此进行编译
我知道我不应该使用这些“专用”标头,因为它们不受支持,但至少在我们可以持久替换之前,我们需要它们。
如何QT_VERSION_STR
在路径中连接变量,以使其适用于所有版本?
您可以QT_VERSION
使用易于QT_VERSION_CHECK
理解的帮助程序比较数字宏,该帮助程序将主要,次要和补丁号组合为以下QT_VERSION
格式:
#if QT_VERSION == QT_VERSION_CHECK(5, 4, 1)
//...
#endif
从GCC标头C宏获取连接的想法-动态#include
问题在于我们没有Qt主版本,次版本和补丁版本的宏令牌。只有数字QT_VERSION
。因此,很难获得所需的数字。可以.pro
使用qmake
变量将它们作为宏定义从文件传输QT_*_VERSION
:
DEFINES += QT_MAJOR_VERSION=$$QT_MAJOR_VERSION
DEFINES += QT_MINOR_VERSION=$$QT_MINOR_VERSION
DEFINES += QT_PATCH_VERSION=$$QT_PATCH_VERSION
现在,这些宏版本可以在源文件中使用:
// To return as a string: "5.4.1/QtGui/private/qzipwriter_p.h"
#define qt_header__(x) #x
#define qt_header_(major,minor,patch) qt_header__(major.minor.patch/QtGui/private/qzipwriter_p.h)
#define qt_header(major,minor,patch) qt_header_(major,minor,patch)
// Simpler without stringification, however Qt Creator cannot follow
// that header
#define qt_header(major,minor,patch) <major.minor.patch/QtGui/private/qzipwriter_p.h>
#include qt_header(QT_MAJOR_VERSION, QT_MINOR_VERSION, QT_PATCH_VERSION)
最好使用字符串化变体("5.4.1/QtGui/private/qzipwriter_p.h"
)。在这种情况下,最新版本的Qt Creator可以遵循此类qt_header()
宏并相应地突出显示文本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句