如何在 Qt 代码中访问 Qt 构建系统项目 (QBS) 变量
Posted
技术标签:
【中文标题】如何在 Qt 代码中访问 Qt 构建系统项目 (QBS) 变量【英文标题】:How to access Qt Build System project (QBS) variables in Qt code 【发布时间】: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")
我该怎么做?
【问题讨论】:
【参考方案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"
【讨论】:
以上是关于如何在 Qt 代码中访问 Qt 构建系统项目 (QBS) 变量的主要内容,如果未能解决你的问题,请参考以下文章