【问题标题】:How to detect if current project is an app, a shared library or dynamic library in qmake?如何在 qmake 中检测当前项目是应用程序、共享库还是动态库?
【发布时间】:2019-12-17 06:42:09
【问题描述】:

我有一个 .pri 文件,它可以包含在库项目和应用程序项目中。其中的一些细节取决于当前的构建类型(lib 或 app)。

检测当前项目是可执行文件、静态库还是动态库的推荐方法是什么?

【问题讨论】:

  • 你试过TEMPLATE变量吗?文档在这里doc.qt.io/qt-5/qmake-project-files.html#project-templates
  • TEMPLATE 变量似乎有可能检测到applib,但不是静态/动态情况,这会导致CONFIG 变量中的东西混合在一起。所以我希望这里有更通用的东西......

标签: qt qmake


【解决方案1】:

检测当前项目是可执行文件、静态库还是动态库的推荐方法是什么?

捆绑的脚本会检查 TEMPLATECONFIG 变量。以下是执行此类测试的示例代码:

defineReplace(projectType) {
    contains(TEMPLATE, ".*lib") {
        CONFIG(shared, static|shared): return("dynlib")
        return("lib")
    }
    contains(TEMPLATE, ".*app"): return("app")
    return("other")
}

# example usage
prj = $$projectType()
equals(prj, "app"): message("Building the application")
else: message("Doing something different")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多