首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QMake和pkg-config

QMake和pkg-config
EN

Stack Overflow用户
提问于 2019-06-24 18:03:07
回答 1查看 271关注 0票数 0

我在我的一个Qt应用程序中使用libqtermwidget。碰巧的是,在0.8.0版本的库中引入了一些新功能,而0.6.0版本中没有这些功能。

因为libqtermwidget没有提供任何版本宏,所以我想在qmake中使用pkg-config来检查它的版本,如下所示:

代码语言:javascript
复制
# i would like a functionality like this
if pkg-config --version qtermwidget5 < 0.8.0
    DEFINES += OLD_QTERMWIDGET

当然,这可以在cpp文件中使用:

代码语言:javascript
复制
#ifndef OLD_QTERMWIDGET
    ... code for 0.8.0 and higher ...
#endif
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-24 21:35:17

您应该使用$$system()来调用pkg-config并读取标准输出(如果有的话)。但让我们以更“通用”的方式对其进行编程:

代码语言:javascript
复制
# finds package version by invoking 'pkg-config'
# $$1 = package
# note: stores value in cache (stash) file for subsequent use
defineReplace(findPackage) {
    # using <package>Version variable
    pkg = $${1}Version
    !defined($$pkg, var) {
        # cache miss
        # note: $$pkgConfigExecutable() is an undocumented function from qt_functions.prf
        $$pkg = $$system($$pkgConfigExecutable() --modversion $$1)
        # cannot store the empty value
        isEmpty($$pkg): $$pkg = 0
        # save to the stash file
        cache($$pkg, stash)
    }
    # return value of <package>Version
    return($$eval($$pkg))
}


# now using this...
qtw5 = $$findPackage(qtermwidget5)
equals(qtw5, 0) {
    error("qtermwidget5 is not installed")
} else:!versionAtLeast(qtw5, 0.8.0) {
    warning("Found an old version of qtermwidget5 ($$qtw5)")
    DEFINES += OLD_QTERMWIDGET
} else {
    # nothing
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56734224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档