Как получить доступ к переменным проекта Qt Build System (QBS) в коде Qt - PullRequest
0 голосов
/ 26 октября 2018

Добрый день.

Мне нужно получить доступ к определенным переменным QBS внутри моего кода Qt.

Примером является имя приложения, организация или даже разновидность, все переменные, указанные так, как это в моем файле 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
        }
    }
}

Глядя на документацию Qt для QBS , я не нашел никаких ссылок на использование переменных QBS в коде Qt.

Этот является единственной ссылкой на использование переменных QBS, но только в файле QBS

Я хотел бы сделать это:

QString appflavour = Qbs.get("flavour")

Как я могу это сделать?

1 Ответ

0 голосов
/ 27 октября 2018

Возможным вариантом является использование 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"
...