如何在 Qt 代码中访问 Qt 构建系统项目 (QBS) 变量

How to access Qt Build System project (QBS) variables in Qt code

美好的一天。

我需要在我的 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 变量的 link,但仅在 QBS 文件中

我想这样做:

QString appflavour = Qbs.get("flavour")

我该怎么做?

一个可能的选择是使用 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"