包含指令取决于Qt版本

加利内特

我需要在代码中包含以下标头:

#include <5.4.1/QtGui/private/qzipwriter_p.h>

问题是,我们正在其他Qt版本(例如5.4.2或5.5.x)上对此进行编译

我知道我不应该使用这些“专用”标头,因为它们不受支持,但至少在我们可以持久替换之前,我们需要它们。

如何QT_VERSION_STR在路径中连接变量,以使其适用于所有版本?

奥雷斯特·赫拉(Orest Hera)

您可以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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Maven依赖版本取决于JVM版本

来自分类Dev

Maven依赖版本取决于JVM版本

来自分类Dev

Common Lisp:asdf取决于特定版本

来自分类Dev

最新的Koala取决于哪个ZendFramework版本?

来自分类Dev

行为取决于SQL Server版本

来自分类Dev

Android Manifest属性取决于SDK版本

来自分类Dev

行为取决于SQL Server版本

来自分类Dev

最新的Koala取决于哪个ZendFramework版本?

来自分类Dev

分段故障。取决于ubuntu版本

来自分类Dev

AngularJS指令:取决于属性值的switch语句

来自分类Dev

_MSC_VER是否取决于工具箱版本?

来自分类Dev

android webview版本是否取决于sdk或设备?

来自分类Dev

hello world崩溃的调试版本,取决于优化级别

来自分类Dev

dynamic_cast失败-取决于操作系统版本

来自分类Dev

C ++“错误:“缺少参照...的对象”取决于gcc版本

来自分类Dev

如何处理推送通知(取决于iOS版本)?

来自分类Dev

Gson().fromJson() 错误取决于操作系统版本

来自分类Dev

DIV宽度取决于包含的IMG宽度。内部文字溢出

来自分类Dev

取决于AngularJS中的父指令,在子伪指令中“需要”

来自分类Dev

取决于AngularJS中的父指令,在子伪指令中“需要”

来自分类Dev

取决于sbt指令sbt将依赖项目打包到多项目构建中?

来自分类Dev

为什么嵌套指令Controller和Link函数的触发顺序取决于template和templateUrl?

来自分类Dev

addEventListener取决于setTimeout

来自分类Dev

取决于生成的文件

来自分类Dev

Gradle,取决于订购

来自分类Dev

函数取决于迭代

来自分类Dev

使变量取决于目标

来自分类Dev

使宏取决于If

来自分类Dev

.deb取决于间隔