Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: troorl от Январь 06, 2008, 17:28



Название: Две версии Qt на одной машине
Отправлено: troorl от Январь 06, 2008, 17:28
Привет. У меня в Ubuntu установлена Qt4.3. Я не хочу замусоривать систему, но в то же время мне нужно также использовать Qt4.4. Есть ли какие-то рекомендации по данному поводу, по переменным среды и прочему? Хотелось бы максимально удобно всё это сделать.


Название: Re: Две версии Qt на одной машине
Отправлено: Пантер от Январь 06, 2008, 17:56
Я делаю так:
1. Конфигурю с префиксом /opt/qt/4.4
2. make
3. sudo make install
4. Делаю симлинк: sudo ln -s /opt/qt/4.4/bin/qmake /usr/bin/qmake_4.4
Думаю далее все ясно. ;)


Название: Re: Две версии Qt на одной машине
Отправлено: troorl от Январь 06, 2008, 18:29
То есть новый qmake сам создаст Makefile с нужными путями и программа слинкуется с новой версией Qt?


Название: Re: Две версии Qt на одной машине
Отправлено: Пантер от Январь 06, 2008, 19:38
Ага. Ты все правильно понял. :) Можно хоть 10 версий использовать.


Название: Re: Две версии Qt на одной машине
Отправлено: troorl от Январь 06, 2008, 19:41
Спасибо, так и сделаю :)


Название: Re: Две версии Qt на одной машине
Отправлено: silart от Май 20, 2008, 05:16
Это все в для Linux походу? Подскажите пожалуйста как тоже самое под Windows сделать. Конкретно мне нужно чтобы было 2 версии одной и той же Qt: static и shared. Использую Qt 4.2.2 и MSVC 2005. Там нужно переменные среды как-то задавать? Если кто делал, хотелось бы услышать рецепт! :)


Название: Re: Две версии Qt на одной машине
Отправлено: lit-uriy от Май 20, 2008, 08:56
я не для студии делал, но может на основе моего варианта сделаешь для студии (см. тут (http://www.forum.crossplatform.ru/index.php?showtopic=724)), т.е место про bat'ник, вроде в студии есть своя командная строка может туда это все определить.
---
P.S. я со студией не работал, тебе виднее


Название: Re: Две версии Qt на одной машине
Отправлено: Hellraiser от Май 20, 2008, 18:30
Qt ищет библиотеки по переменной среды QTDIR, которая должна указывать на нужную версию. Соответственно, следующие варианты решения:
1. Если компиляция через командную строку, то либо пишем батник, либо явно указываем перед вызовом qmake переменные QTDIR и PATH. Например
Код:
SET QTDIR=C:\QT\4.3.4-static
SET PATH=C:\QT\4.3.4-static\bin;%PATH%
qmake
2. При сборке проекта в студии можно оперировать переопределением этих переменных в файле проекта. Именно так и поступает интегратор при работе с двумя версиями.


Название: Re: Две версии Qt на одной машине
Отправлено: Kosh от Май 21, 2008, 09:55
Вариант для Windows:

1. Все переменные среды, относящиеся к QT переносим в пользовательские переменные.
2. Создаем нового пользователя.
3. Ставим под ним другую QT.
4. Проверяем, чтобы, переменные для новой QT стояли в пользовательских переменных.


Название: Re: Две версии Qt на одной машине
Отправлено: silart от Май 21, 2008, 10:10
Вариант для Windows:

1. Все переменные среды, относящиеся к QT переносим в пользовательские переменные.
2. Создаем нового пользователя.
3. Ставим под ним другую QT.
4. Проверяем, чтобы, переменные для новой QT стояли в пользовательских переменных.


Неужели все так сложно? Еще и пользователя делать нужно... А если у меня несколько версий (скажем штук пять), то это надо 10 пользователей делать чтоли? Может можно эти переменные как-то в одном пользователе изменять?


Название: Re: Две версии Qt на одной машине
Отправлено: silart от Май 21, 2008, 10:20
Qt ищет библиотеки по переменной среды QTDIR, которая должна указывать на нужную версию. Соответственно, следующие варианты решения:
2. При сборке проекта в студии можно оперировать переопределением этих переменных в файле проекта. Именно так и поступает интегратор при работе с двумя версиями.
Вот с этого места пожалуйста подробнее поясните. Каким образом можно менять переменные среды в студии. Помимо Qt у студии есть еще свои переменные (такие например как INCLUDE, LIB, PATH, и т. д. ) (смотрим файлик C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat). Когда компилируешь из командной строки, приходится запускать этот файлик, чтобы активировались эти переменные среды. Причем эти переменные не видны в Windows (Панель управления/Система/дополнительно/Переменные среды), и где их тогда можно поправить? Очевидно нужно туда еще дописать переменные среды от Qt и менять их по мере необходимости. Может кто разбирался, подскажите пожалуйста.


Название: Re: Две версии Qt на одной машине
Отправлено: Hellraiser от Май 22, 2008, 16:01
Цитировать
Вот с этого места пожалуйста подробнее поясните. Каким образом можно менять переменные среды в студии.
Пусть переменная среды QTDIR указывает на папку с shared версией Qt и в отдельной папке есть библиотеки для static версии.
1. Project -> Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions. Для shared указываем QT_DLL, для static - убираем. Для debug - QT_DEBUG, для release - убираем.
2. Project -> Properties -> Linker -> General -> Additional Library Directories. Прописываем абсолютный путь к требуемым библиотекам.
Все это относится только к сборке проекта из IDE.


Название: Re: Две версии Qt на одной машине
Отправлено: silart от Июнь 20, 2008, 11:46
Товарищи, кто-нибудь знает каким образом задаются переменные среды в самой студии? Такие, например, как $(OutDir), $(ProjectName) и т. д. Везде рылся негде не обнаружил. Ведь было бы удобно, если QTDIR можно было бы задавать в самом проекте. Когда создается проект в одной какой-то версии Qt (static или shared) и при этом если меняем QTDIR в системе, значение QTDIR остается прежним. Поэтому приходится указывать абсолютные пути к библиотекам.
Просто указывать абсолютный путь не есть гуд!


Название: Re: Две версии Qt на одной машине
Отправлено: crossly от Июнь 20, 2008, 12:31
в настройках интегратора есть версии библиотек.... далее в проекте нужно только указать версию для проекта и все... системная переменная QTDIR вообще не нужна...


Название: Re: Две версии Qt на одной машине
Отправлено: silart от Июнь 21, 2008, 12:24
в настройках интегратора есть версии библиотек.... далее в проекте нужно только указать версию для проекта и все... системная переменная QTDIR вообще не нужна...
Объясните пожалуйста как вы ей пользуетесь и на что она влияет. Что она заменяет? Просто я уже давно бьюсь со всем этим, хочу разобраться как следует правильно Qt установить. Я ее всяко крутил и не помогает, только QT_DLL и абсолютные пути к либам помогли. Хотелось чтоб можно было легко и static и shared версии проекта собирать. Да еще в коммерческой версии 4.4 Qt для Windows CE есть, с ней я еще не разбирался. Можно интересно так сделать, чтобы легко перенастроить Qt на сборку проекта для WinXP или для WinCE?


Название: Re: Две версии Qt на одной машине
Отправлено: crossly от Июнь 23, 2008, 09:04
ни студии ни интегратора под рукой нету.... я по памяти... тебе просто в настройках проек4та нужно указать какую верисию юилиотеки использовать.... версии вписываются в настройках интегратора..


Название: Re: Две версии Qt на одной машине
Отправлено: silart от Июнь 24, 2008, 18:12
ни студии ни интегратора под рукой нету.... я по памяти... тебе просто в настройках проек4та нужно указать какую верисию юилиотеки использовать.... версии вписываются в настройках интегратора..
Еще че-то в настройках проекта крутить надо? Че-то я не видел там ничего. Какую версию Qt использовать в настройках студии устанавливается. Только я понять не могу что это меняет. В проекте все относительно QTDIR. Причем значение QTDIR сохраняется в проекте и мне непонятно как его можно изменить. Даже если меняешь версию Qt в настройках студии, QTDIR остается прежним, каким его присвоили при создании. Также непонятно как изменить другие переменные среды проекта. В настройках я такого не встретил.


Название: Re: Две версии Qt на одной машине
Отправлено: Godfather от Июнь 25, 2008, 12:04
глянь в VS -> Tools -> Options -> Qt -> Builds


Название: Re: Две версии Qt на одной машине
Отправлено: crossly от Июнь 27, 2008, 08:43
QTDIR тебе вообще не нужно....


Название: Re: Две версии Qt на одной машине
Отправлено: Godfather от Июнь 27, 2008, 09:56
ну по идее все пути в настройках проекта типа Additional Include Pathes задаются через $(QtDir)\


Название: Re: Две версии Qt на одной машине
Отправлено: DarkPhoenix от Июнь 27, 2008, 11:22
что мешает использовать Eclipse?
там есть выбор версии с которой работает проект.


Название: Re: Две версии Qt на одной машине
Отправлено: Godfather от Июнь 27, 2008, 11:27
в VS тоже самое

и помойму Эклипс предназначена в первую очередь для явы


Название: Re: Две версии Qt на одной машине
Отправлено: DarkPhoenix от Июнь 27, 2008, 11:43
Не только, есть блоки для разработки много на чем.
например у меня нет ничего для разработки на Java, только С++ с CDT 5.0 вчера поставил, еще не успел оценить.
минус только один - ресурсо-прожорливость, но опять же можно подправить, а Ганимед по мимолетному взгляду стал быстрей Европы.


Название: Re: Две версии Qt на одной машине
Отправлено: silart от Июнь 27, 2008, 16:41
что мешает использовать Eclipse?
там есть выбор версии с которой работает проект.

Что это такое и можно ее прикрутить к MSVC++ ?


Название: Re: Две версии Qt на одной машине
Отправлено: silart от Июнь 27, 2008, 16:46
Товарищи, вот я установил 2 версии QT (static и shared). Находятся в разных папках. Если проект был создан в какой-либо из версий, то для перекомпиляции ее в другой, нужно не только либы прямым путем указывать, но инклуды тоже. Если инклуды не указать, а старые оставить, возникают множественные ворнинги, но проект все равно собирается. Но это ведь большой геморрой, абсолютные пути. Почему нельзя менять QTDIR в проекте? Кто-нибудь ваще использует студию для работы с Qt? ведь это же серьезная проблема, и никто не может дать внятного ответа как ее решить.


Название: Re: Две версии Qt на одной машине
Отправлено: Kosh от Ноябрь 25, 2010, 14:29
У меня VS2005 с интегратором и Qt-4.0.0
Возникла необходимость собирать проект и с dll и статическую.
В VS -> Tools -> Options -> Qt -> Builds задала пути для обеих библиотек, но вот создать проект под студию из .pro не получается, если путь в Qt -> Builds по умолчанию и QTDIR не совпадают.
выдает следующее:
Код:
--- (Import): Generating new project of musicplayer.pro file
--- (qmake) : Using: [Путь, который указан в Qt -> Builds]\bin\qmake
--- (qmake) : Working Directory: E:\Visual Studio 2005\Projects\musicplayer
--- (qmake) : Arguments: -spec $(QTDIR)\mkspecs\win32-msvc2005 -tp vc "musicplayer.pro" -o "musicplayer.vcproj" QMAKE_INCDIR_QT=$(QTDIR)\include QMAKE_LIBDIR_QT=  QMAKE_LIBDIR=$(QTDIR)\lib QMAKE_UIC=$(QTDIR)\bin\uic.exe QMAKE_MOC=$(QTDIR)\bin\moc.exe QMAKE_RCC=$(QTDIR)\bin\rcc.exe QMAKE_QMAKE=$(QTDIR)\bin\qmake.exe

--- (Import): Error(s): 0
--- (qmake) : Exit Code: 3

Ещё нашла где-то в настройках проекта возможность вставить команду до компиляжа, после компиляжа, до линковки. Наивно думала, что это спасёт, если в качестве команды указать "SET QTDIR=.....". Но, судя по логу, команды до компиляжа запускаются из одного временного батника, а компилятор из другого, т.е. переменная восстановила своё прежнее значение.

============ ПРОБЛЕМА РЕШЕНА ===============
1. Пусть имеем две библиотеки в каталогах c:\qt-4.4.0-static и c:\qt-4.4.0-share
2. Из переменных окружения вышибаем переменную QTDIR (я ещё удивилась, чего это она не упоминается в файле инсталляции....)
3. В студии (у меня VS2005 с интегратором) выбираем Tools -> Options -> Qt -> Builds. Добавляем туда пути до библиотек.
4. Там же устанавливаем нужную по умолчанию.
5. Выбираем в меню Qt->Open Solution From .pro File. Создаётся студийный проект под заданную по умолчанию библиотеку. Всё готово!
6. Нужно поменять библиотеку, повторяем п.4. и п.5. При этом оно предлагает существующий проект переименовать или перезаписать.


Если бы  crossly высказался более определённо, а не
Цитировать
QTDIR тебе вообще не нужно....
дошло бы раньше. Но всё равно , спасибо crossly и Godfather.