【问题标题】:How to access Qt Build System project (QBS) variables in Qt code如何在 Qt 代码中访问 Qt 构建系统项目 (QBS) 变量
【发布时间】:2018-10-26 18:21:07
【问题描述】:

美好的一天。

我需要访问我的 Qt 代码中的特定 QBS 变量。

一个例子是应用程序的名称、组织甚至是风格,在我的应用程序 qbs 文件中这样指定的所有变量。

import qbs

Project {

    // These variables should be available in C++ code.
    name: "my_app_name"
    organization: "Organisation_Name"
    flavour:"AppFlavour"
    minimumQbsVersion: "1.7.1"

    CppApplication {
        files: [
        ]
        Depends { name: "Qt"; submodules: ['core', 'network'] }

        cpp.cxxLanguageVersion: "c++11"

        cpp.defines: [
            "QT_DEPRECATED_WARNINGS",
        ]

        consoleApplication: true

        Group {
            name: "source"
            files: [
                "qconfigurationmanager.cpp",
            ]
        }

        Group {
            name: "header"
            files: [
                "qconfigurationmanager.h",
            ]
        }

        Group {     // Properties for the produced executable
            fileTagsFilter: "application"
            qbs.install: true
        }
    }
}

查看QBS 的Qt 文档,我没有找到在Qt 代码中使用QBS 变量的任何参考。

This是使用QBS变量的唯一链接,但仅限于QBS文件内

我想这样做:

QString appflavour = Qbs.get("flavour")

我该怎么做?

【问题讨论】:

    标签: qt qt5 qt-creator qbs


    【解决方案1】:

    一种可能的选择是使用 DEFINES 并通过宏获取数据:

    import qbs
    
    Project {
        minimumQbsVersion: "1.7.1"
    
        property string name: "my_app_name"
        property string organization: "Organisation_Name"
        property string flavour:"AppFlavour"
    
        CppApplication {
            Depends { name: "Qt"; submodules: ['core', 'network']}
            cpp.cxxLanguageVersion: "c++11"
            consoleApplication: true
    
            cpp.defines: [
                "QT_DEPRECATED_WARNINGS",
                "name=" + project.name,
                "organization=" +  project.organization,
                "flavour=" + project.flavour
            ]
    ...
    

    #define QUOTE_(x) #x
    #define QUOTE(x) QUOTE_(x)
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        QString appname = QUOTE(name);
        QString organization = QUOTE(organization);
        QString appflavour = QUOTE(flavour);
    
        qDebug()<< appname << organization << appflavour;
    
    ...
    

    输出:

    "my_app_name" "Organisation_Name" "AppFlavour"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多