如何根据配置向 .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
}