Russian Qt Forum
Ноябрь 23, 2024, 08:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: qt4/qt5 и pro-файл  (Прочитано 5818 раз)
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« : Июль 04, 2013, 11:57 »

Как разделить секции в про файле, которые отностяся к разным версиям qt?

что то типа
Код:
if(qt4)
{
LIBS += using_json_spirit_libs
}
else
if(qt5)
{
LIBS += using_native_libs
}
Записан
VPS
Гость
« Ответ #1 : Июль 04, 2013, 12:10 »

Может как-то так:
Код:
greaterThan(QT_MAJOR_VERSION, 4) {
...
} else {
...
}
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Июль 04, 2013, 12:25 »

для удобства можно ввести свою переменную:
Код:
greaterThan(QT_MAJOR_VERSION, 4): IS_QT5 = 1
...
isEmpty(IS_QT5) {
# Qt 4
}
else {
# Qt 5
}
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #3 : Июль 04, 2013, 13:35 »

Сделал так...
Код:
QT  += xml network gui

greaterThan(QT_MAJOR_VERSION, 4)
{
    QT += widgets multimedia
}
lessThan(QT_MAJOR_VERSION, 5):QT += phonon

unix {

greaterThan(QT_MAJOR_VERSION, 4): LIBS += -L$$PWD/../../../build/libs/railcore/debug/ -lrailcore_old
lessThan(QT_MAJOR_VERSION, 5): LIBS +=  -L$$PWD/../../../build/libs/railcore/debug/ -lrailcore_old \
                                        -L$$PWD/../../../build/libs/railcore/release/ -lrailcore_old \
                                        -L/usr/local/lib \
                                        -ljson_spirit \
                                        -lboost_thread
}
с else работать не захотело
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Июль 04, 2013, 14:28 »

почему бы не вынести LIBS += -L$$PWD/../../../build/libs/railcore/debug/ -lrailcore_old вне условий? и там и там ведь встречается.
с else работать не захотело
написал видно неправильно. кажется else должен начинаться с новой строки.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #5 : Июль 04, 2013, 15:53 »

написал видно неправильно. кажется else должен начинаться с новой строки.

Так будет работать
Код:
greaterThan(QT_MAJOR_VERSION, 4): {
 # Qt 5
} else: {
 # Qt 4
}

А вот эту строку, использую в каждом проекте
Код:
# Если сборка идет в Qt5 и сборка с GUI добавить модуль widgets
greaterThan(QT_MAJOR_VERSION, 4): contains( QT, gui ): QT += widgets
« Последнее редактирование: Июль 04, 2013, 15:55 от lesav » Записан

Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #6 : Июль 04, 2013, 16:57 »

с else работать не захотело

открывающая скобка должна быть на той же строке что и условие, а else - на той же, где закрывающая. В самом начале дан рабочий пример.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Июль 04, 2013, 18:36 »

Так будет работать
Код:
greaterThan(QT_MAJOR_VERSION, 4): {
 # Qt 5
} else: {
 # Qt 4
}
двоеточие необходимо только если выражение внутри блока условия лишь одно и нету фигурных скобок либо как аналог else if
а else - на той же, где закрывающая
получается у меня неправильный qmake, который позволяет else на новой строке?
« Последнее редактирование: Июль 04, 2013, 22:04 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Июль 04, 2013, 21:01 »

>>а else - на той же, где закрывающая.
имеется ввиду первая закрывашка (перед else).
Записан

Юра.
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #9 : Июль 04, 2013, 22:04 »

нигде прямым текстом не сказано, что else обязан находиться на одной строке с } http://qt-project.org/doc/qt-4.8/qmake-advanced-usage.html#scopes-and-conditions говорит только:
Цитировать
You can also provide alternative declarations to those within a scope by using an else scope. Each else scope is processed if the conditions for the preceding scopes are false.
хотя примеры кода указаны именно в виде } else.

qmake вообще хитрая штука. взять хотя бы http://www.qtcentre.org/wiki/index.php?title=Undocumented_qmake
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 23.