Как добавить логику в файл .pro в зависимости от конфигурации? - PullRequest
0 голосов
/ 03 мая 2018

В моем приложении (на основе qmake) у меня есть 2 конфигурации, скажем, CONF1 и CONF2. Каждая конфигурация определяет «Дополнительные аргументы» на вкладке «Проект» / «Настройки сборки» / «Шаг сборки»:

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-файла.

Итак, мой вопрос - как я могу добавить разные настройки (иконки в моем случае) для другой конфигурации?

1 Ответ

0 голосов
/ 03 мая 2018

Насколько я знаю, qmake не может оценивать переменные, установленные в списке DEFINES, а только переменные qmake.

Однако вы можете использовать переменную qmake для одновременного выполнения обеих задач. Просто присвойте переменной значение conf, оцените эту переменную, чтобы добавить ее в список DEFINES, а затем протестируйте ее значение с помощью функций qmake (например, равно ).

Как пример:

Добавьте следующее к вашим дополнительным аргументам qmake (включая кавычки):

"MYCONF = CONF1"

Затем используйте эти директивы в вашем .pro-файле:

DEFINES += $${MYCONF}

equals(MYCONF, "CONF1") {
    RC_ICONS = conf1.ico
} else {
    RC_ICONS = conf2.ico
}
...