如何根据配置向 .pro 文件添加逻辑?
How to add a logic to .pro file based on configuration?
在我的应用程序(基于 qmake)中,我有 2 个配置,比如说 CONF1 和 CONF2。
每个配置在 Project/Build settings/Build 步骤选项卡处定义 "Additional arguments":
DEFINES+=CONF1
和
DEFINES+=CONF2
所以在 C++ 代码中,我可以为指定的构建配置添加一些指定的逻辑:
#if defined CONF1
logo->setPixmap(QPixmap("conf1.png"));
#else
logo->setPixmap(QPixmap("conf2.png"));
#endif
我还需要为应用程序可执行文件定义图标。
所以在 .pro 文件中我添加了:
win32 {
RC_ICONS = logo.ico
}
但问题是我需要不同的图标来进行不同的配置。
我试过:
contains(DEFINES, CONF1) {
RC_ICONS = conf1.ico
}
else {
RC_ICONS = conf2.ico
}
但这不起作用。看起来 contains
仅适用于 .pro 文件中定义的变量。
所以我的问题 - 如何为不同的配置添加不同的设置(在我的例子中是图标)?
据我所知,qmake 无法评估 DEFINES 列表中设置的变量,只能评估 qmake 变量。
但是,您可以使用 qmake 变量同时执行这两项任务。只需将 "conf" 值分配给您的变量,评估该变量以将其添加到 DEFINES 列表中,然后使用 qmake 函数测试其值(例如 equals)。
举个例子:
将以下内容添加到您的附加 qmake 参数(包括引号)中:
"MYCONF = CONF1"
然后在您的 .pro 文件中使用这些指令:
DEFINES += $${MYCONF}
equals(MYCONF, "CONF1") {
RC_ICONS = conf1.ico
} else {
RC_ICONS = conf2.ico
}
在我的应用程序(基于 qmake)中,我有 2 个配置,比如说 CONF1 和 CONF2。 每个配置在 Project/Build settings/Build 步骤选项卡处定义 "Additional arguments":
DEFINES+=CONF1
和
DEFINES+=CONF2
所以在 C++ 代码中,我可以为指定的构建配置添加一些指定的逻辑:
#if defined CONF1
logo->setPixmap(QPixmap("conf1.png"));
#else
logo->setPixmap(QPixmap("conf2.png"));
#endif
我还需要为应用程序可执行文件定义图标。 所以在 .pro 文件中我添加了:
win32 {
RC_ICONS = logo.ico
}
但问题是我需要不同的图标来进行不同的配置。
我试过:
contains(DEFINES, CONF1) {
RC_ICONS = conf1.ico
}
else {
RC_ICONS = conf2.ico
}
但这不起作用。看起来 contains
仅适用于 .pro 文件中定义的变量。
所以我的问题 - 如何为不同的配置添加不同的设置(在我的例子中是图标)?
据我所知,qmake 无法评估 DEFINES 列表中设置的变量,只能评估 qmake 变量。
但是,您可以使用 qmake 变量同时执行这两项任务。只需将 "conf" 值分配给您的变量,评估该变量以将其添加到 DEFINES 列表中,然后使用 qmake 函数测试其值(例如 equals)。
举个例子:
将以下内容添加到您的附加 qmake 参数(包括引号)中:
"MYCONF = CONF1"
然后在您的 .pro 文件中使用这些指令:
DEFINES += $${MYCONF}
equals(MYCONF, "CONF1") {
RC_ICONS = conf1.ico
} else {
RC_ICONS = conf2.ico
}