Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как скомпилить приложение на QT под виндой


Автор: Mephisto 23.4.2007, 10:19
Люди, есть приложение писаное на QT под Linux'ом. Как его скомпилить под форточкой. Стоит VS2005  и библиотека QT 2. Читал что он должен интегрироватся в студию, только не нашел где он это сделал. И не компилится.

Мош кто подскажет чиго полезного... 

Пасип.

Автор: Любитель 23.4.2007, 11:16
Mephisto, во-первых вряд ли твоё приложение расчитанное на вторую кутеху. Лично я такого чуда вживую даже не видел...

Во-вторых, не факт, что там не используются всё-таки платформозависимые вещи (не из куте). Хотя, как знать... К тому же многое легко портировать.

В-третьих, интеграция тебе не нужна. Нужен компилер, qmake и текстовый редактор для потенциальной правки исходников.

Наконец-таки:
Цитата(Mephisto @  23.4.2007,  10:19 Найти цитируемый пост)
И не компилится

Эх, ну пишите поподробней. что конкретно выдаёт?

Итак:
1. Узнаёшь, какую версию куте юзает приложение.
2. Достаёшь её. Собираешь, прописываешь энввары.
3. Пытаешь с команд-лайн собрать это дело.
4. Постишь выданные ошибки и строки исходников, связанные с ними.
5. Если возможно, получаешт ответ, чем можно заменить нерабочие конструкции.

Автор: SenkraD 23.4.2007, 12:41
не знаю я качал с официального сайта trollege и у мя при установке была галочка интегрироватся в студию.
и потом в проектах появляется новая вкладк QT Projects
Там была трабла с тем, что пути к хедерам нуно самому к каждому проекту самому добавлять.

Автор: Любитель 23.4.2007, 13:01
Да не в интеграции дело! А в версии куте и правильно ейё сборке/конфигурации. Для Qt 4

Добавлено через 1 минуту и 40 секунд
Да не в интеграции дело! А в версии куте и правильно ейё сборке/конфигурации.

Цитата(SenkraD @  23.4.2007,  12:41 Найти цитируемый пост)
не знаю я качал с официального сайта trollege

Не знаю, что ты качал с официального сайта trollege, но у тролтеч для Qt 4 идёт отдельный интегратор. К отму же доступный только комерческим юзерам. Как с Qt 3 - не знаю.

Автор: SenkraD 23.4.2007, 15:12
Да он платный и идёт с инсталятором QT4 и всё вместе стоит вродь 1550$,  но есть и триал на 30 дней нужно просто зарегистрироватся у них и они те вышлют на мыло активационые коды и вродь что ещё.

P.S. За хорошые вещи нужно платить - писать в студии быстее и удобнее чем в текстовом редакторе

Автор: Любитель 23.4.2007, 15:16
SenkraD, триал QT Comercical - есть, а вот интегратора, по-моему, нет. А вообще не в этом вопрос. Надо портировать готовый проект. Интегратор тут нефига не поможет. Нужна просто куте нужной версии. Запуск qmake -t vcapp my_app.pro вроде никто не отменял (для генерации vcproj файла). Далее, если хотим можно незначительные исправления вносить и в студии. Но это  ИМХО из пушки по вобробьям...

Добавлено через 1 минуту и 57 секунд
Цитата(SenkraD @  23.4.2007,  15:12 Найти цитируемый пост)
 За хорошые вещи нужно платить - писать в студии быстее и удобнее чем в текстовом редакторе

Для эклипса подобное расширение тоже троли обещали. Бесплатное... Да и толку с него мало. Ничего интересного оно не даёт. Даже, когда юзаю студию (чего впрочем давно не было), предпочитаю просто кумейком генерить файлы проекта. В том числе после добавления файлов. Не супер удобно, но интегратор ИМХО ещё хуже...

Автор: Mephisto 26.4.2007, 10:17
Отставил QT 4.2.3 под форточки с примитивным кодом. Пробую запустить qmake, подхватывает. Делает MakeFile и еще 2 таких же (в отиличии от QT3) с названиями release и debug. Но когда запускаю mingw32-make.exe  который попросила КТ отставить. Он говорит что "Makefile is up to date". как с этим бороться???

Автор: EnergoHokum 26.4.2007, 10:37
Насчёт интеграции QT в визуалку не подскажу, у меня он интегрирован с Emacs и MinGW ;-). Больших проектов не делал. Из того, что делал: натравливал qmake на исходники (qmake project && qmake, последовательность не помню), потом в созданных Makefile, Makefile.Release и Makefile.Debug в путях заменял \ на /, ибо компилятор не понимал таких путей, ну а потом - make, и всё работало. А, у меня Qt 4.2, если что.

Автор: Mephisto 26.4.2007, 10:47
Цитата(EnergoHokum @  26.4.2007,  11:37 Найти цитируемый пост)
ну а потом - make, и всё работало

Вот тут и выдает "MakeFile is up to date". В путях все нормуль ибо qmake говорю чтоб под винды сделал мну. 

Автор: EnergoHokum 26.4.2007, 13:21
Ето, слушай, а у тебя qmake успевает отпустить Makefile, прежде чем до него make доберётся? "MakeFile is up to date" очень похоже на "MakeFile обновляется".

Добавлено через 4 минуты и 6 секунд
Только что делал так:
qmake -project
qmake
правил Makefile и Makefile.Release с целью замены \ на / в Emacs (replace-regexp \\\< /)
make release
всё собралось с полпинка. Даже не знаю, как твою проблему воспроизвести.

Автор: Mephisto 26.4.2007, 16:52
асилил. ТОлько не могу понять в чем теперь проблема. Думаю разница в том что писалось все на трехе, а теперь пытаюсь скомпилить в четвертой версии, но пишет:
Цитата

mingw32-make.exe -f Makefile.Debug
mingw32-make.exe[1]: Entering directory `C:/Projects/C'
g++ -c -g -g -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Pr
ojects/QT4/include/QtCore" -I"C:/Projects/QT4/include/QtCore" -I"C:/Projects/QT4/include/QtGui" -I"C:/Projects/QT4/include/QtGui" -I"C:/Projects/QT4/incl
ude" -I"." -I"C:/Projects/QT4/include/ActiveQt" -I"debug" -I"." -I"..\QT4\mkspecs\default" -o debug\main.o main.cpp
main.cpp: In function `int qMain(int, char**)':
main.cpp:9: error: 'class QApplication' has no member named 'setMainWidget'
main.cpp:13:3: warning: no newline at end of file
mingw32-make.exe[1]: *** [debug\main.o] Error 1
mingw32-make.exe[1]: Leaving directory `C:/Projects/C'
mingw32-make.exe: *** [debug] Error 2


Добавлено через 9 минут и 30 секунд
Ну вот. Заюзал как в экзамплах QMainWindow и покатило все.

Похоже с четверки только через нее можно работать. setMainWidget уже нет. :(

Автор: EnergoHokum 27.4.2007, 07:11
Почему же нету, есть, запусти справку (Assistant), там написано и нарисовано очень много интересного.

Автор: Mephisto 27.4.2007, 12:20
EnergoHokum, а как тогда это понимать:
Цитата

error: 'class QApplication' has no member named 'setMainWidget'

Автор: nickless 27.4.2007, 17:07
EnergoHokum, в 4 КуТе setMainWidget больше не нужен, читаем http://doc.trolltech.com/4.2/porting4.html#qapplication

Автор: X-3R1 28.4.2007, 01:37
Гайд QT4 + VS: http://wiki.qtcentre.org/index.php?title=Qt4_with_Visual_Studio

Автор: EnergoHokum 28.4.2007, 10:05
Разговор был о том, что его в четвёрке нет, а не о том, нужен он или не нужен. За качество перевода не бить:
void QApplication::setMainWidget ( QWidget * mainWidget )  [static]
Устанавливает главным окном приложения mainWidget. В основном mainWidget похож на остальные widget`s, за исключением того, что при его закрытии приложение закрывается. QApplication не становится родителем mainWidget, так что если вы создаёте mainWidget на куче, удалять его придётся самостоятельно. Вы не обязаны объявлять mainWidget главным, можно использовать connecting lastWindowClosed() с quit() как альтернативу. 
Нигде не нашёл про то, что mainWidget не должен присутствовать в приложении.

Автор: nickless 28.4.2007, 15:33
Цитата(EnergoHokum @  28.4.2007,  09:05 Найти цитируемый пост)
Нигде не нашёл про то, что mainWidget не должен присутствовать в приложении

А я и не говорил что не должен, он не нужен. Вот что написано по ссылке, которую я запостил:
Код
QApplication::setMainWidget() is no longer used. When all an application's windows are closed, the application will exit normally.

Т.е. "QApplication::setMainWidget() больше не используется. После того, как все окна в приложении будут закрыты, приложение нормально завершит работу"

Автор: Mephisto 3.5.2007, 10:09
Цитата(nickless @  28.4.2007,  16:33 Найти цитируемый пост)
Т.е. "QApplication::setMainWidget() больше не используется. После того, как все окна в приложении будут закрыты, приложение нормально завершит работу" 

Кстати, если запустить апликуху QT3to4.exe и скормить ей *.pro то она поставит в нем "QT +=  qt3support "
Тогда все нормально компилитси. Гых. Прикольно. И с контейнерами все ок. И QApplication::setMainWidget() понимает. А в четврке действительно не юзаетси. Буду привыкать. Всем пасип. ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)