Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt4] и любимая IDE


Автор: Kipter 20.2.2008, 08:13
Т.к собираюсь в ближайшее время писать проект на Qt4 и наслышан о проблемах компиляции с данной библиотекой на оч многих популярных IDE у меня возник вопросы:

- В связи с чем Qt4 не компилируется спокойно например на томже VC++6? Этоже библиотека так еще и в исходных  кодах, в чем сложность? Какието особенные макросы?

- Хорошо допустим у меня есть Qt4 скомпилированная, а что касается моего проекта? могу ли я его собрать вместе с Qt4 на VC++6 или мне придется и проект писать на томже предлагаемом Trolltech компиляторе для винды?

- чем отличается версия Qt4 с лицензией на комерческую деятельность от GPL версии технически?

Автор: Fazil6 20.2.2008, 10:09
Цитата(Kipter @  20.2.2008,  07:13 Найти цитируемый пост)
- В связи с чем Qt4 не компилируется спокойно например на томже VC++6? Этоже библиотека так еще и в исходных  кодах, в чем сложность? Какието особенные макросы?

нету никаких сложностей. Читай доку и все получится.
Цитата(Kipter @  20.2.2008,  07:13 Найти цитируемый пост)
- Хорошо допустим у меня есть Qt4 скомпилированная, а что касается моего проекта? могу ли я его собрать вместе с Qt4 на VC++6 или мне придется и проект писать на томже предлагаемом Trolltech компиляторе для винды?

сможешь, тока лучше всетаки поновее студию

Цитата(Kipter @  20.2.2008,  07:13 Найти цитируемый пост)
- чем отличается версия Qt4 с лицензией на комерческую деятельность от GPL версии технически?

лицензией и у комерческой есть еще интегратор с MSVS

Автор: devmstr 20.2.2008, 18:47
Проблем действительно нет, все достаточно тривиально, если возникла конкретная проблема, запостите, постараемся помочь. А так все очень просто. 
P.S.
Как бесплатная и мощная альтернатива студии - тот же Eclipse с соответствующим плагином, это если стоит вопрос о лицензионности, ведь MS тоже денег достаточно больших стоит. А так - получаем отличную функциональность(правда чуток вначале не привычно), без проблем с лицензией.

Автор: JackYF 11.3.2008, 21:54
Цитата(Kipter @  20.2.2008,  07:13 Найти цитируемый пост)
В связи с чем Qt4 не компилируется спокойно например на томже VC++6?

Потому как эта версия студии очень плохо поддерживает стандарт С++ в виду своей старости.

Автор: SABROG 11.3.2008, 21:58
Цитата(JackYF @ 11.3.2008,  21:54)
Цитата(Kipter @  20.2.2008,  07:13 Найти цитируемый пост)
В связи с чем Qt4 не компилируется спокойно например на томже VC++6?

Потому как эта версия студии очень плохо поддерживает стандарт С++ в виду своей старости.

И как следствие кроссплатформенный проект перестанет быть кроссплатформенным из-за того, что gcc не сможет никсах ничего скомпилить...

Автор: nickless 11.3.2008, 22:09
Цитата(SABROG @  11.3.2008,  19:58 Найти цитируемый пост)
И как следствие кроссплатформенный проект перестанет быть кроссплатформенным 

"Кроссплаттформенный" не значит "компилируется на древн любом компиляторе" smile 

Автор: Denjs 11.3.2008, 22:35
гы... отвечу в заголовок топика: 
а я пишу без IDE )))  smile 
редактора kate вполне хватает...
отладка? 
Код
 qDebug() << "debug message"; 
рулит ... ) ну в сложных случаях можно и kdbg подключить...

в kate не хватает только дерева свойств и методов класса,... может интерактивной помощи и подсказок по методам qt-классов.. 
а в остальном IDE имхо и не сильно нужен. по крайней мере в не-сильно больших проектах...

компиляция? - с помщью батничка в консоли. 
Для удобства можно вывод через 
Код
 | grep error 
  пропустить что бы отфильтровать лишний строительный мусор...

под винду собираю с mingw
возможно не сильно гут, но пока не занимался глубоко этим вопросом.. работает и ладно...

Цитата

- Хорошо допустим у меня есть Qt4 скомпилированная, а что касается моего проекта? могу ли я его собрать вместе с Qt4 на VC++6 или мне придется и проект писать на томже предлагаемом Trolltech компиляторе для винды?

а что значит "предлагаемом Trolltech компиляторе для винды"? вы про mingw?
-------------------------------------------
как происходит сборка проекта QT : сначала ваши исходники пропускаются через мета компилятор котторый генерирует "нормальный" C++ код. ( Ибо никаких сигналов и слотов в С++ нет. Хорошо так делать или нет - можно спросить у  "троллтеч". но это работает. )
а потом уже проект "собирается" make-ом.

под линукс, если сделать совсем тупо и в лоб это может выглядеть так: 
Код
 qmake -project -t app -o myproject.pro && qmake && make 
 . создается проект "по умолчанию", он пропускается через "мета-компилятор"(или как там его назвать правильно?), потом собирается.

Платная версия QT с интеграцией с VC как я понимаю просто меняет qmake и генерит код который будет нормально восприниматься майкрософтовским компилятором.
Менять что-либо в ваших QT-исходниках как я понимаю не требуется.
по крайней мере "у меня моё" так нормально собирается и в линуксе и в винде.

Я конечно не могу советовать, ибо не разобрался до конца в вопросе IDE+QT, но подозреваю что файл-описание-проекта которые генерируют IDE требуют самой IDE для сборки... вы уверенны что там где вы будете собирать программу будет установлена такая-же ide ?
 а .pro  сгенерированный через qmake -project ничего окромя самого qmake не требует... и нормально воспринимается и в винде и в линукс. 


в данном вопросе - прошу бить не сильно а помочь ) кстати если ткнете в ман как связять Eclipse и QT -  буду признателен... у меня не вышло...  smile 

Автор: SABROG 11.3.2008, 23:10
Мне нравится та среда, которую я под себя заточил: mingw + gdb + qt + eclipse + cdt + qt eclipse integration + subclipse. Прям не нарадуюсь, на днях освоил отладку с gdb, прямо указывает на место в исходниках где прога вылетает, а при наведении мышкой на любую переменную показывает ее содержимое в данный момент и т.п. Освоил gprof, теперь изучаю узкие места в программе, которые долго выполняются. Индексация дала возможность получать список параметров для функций на лету и смотреть в каких местах было определение класса и как оно выглядит, при желании моментальный "телепорт в это место", а вкладка Tasks отображает все места в исходниках где я писал "//TODO: не забыть проверить что-то, добавить то-то", и теперь я точно не забуду реализовать идеи, которые собирался (можно юзать edit->Add Task). Могу выбрать любой стиль программирования K&R, BSD и т.п. и отформатировать этим стилем весь исходник не заботясь о том, что где-то мог забыть о стиле. Если забыл название длинного параметра, класса, переменной, функции, то можно ввести часть имени и нажать Alt+/ и оно допишется само. Окно Outline позволит перемещаться по методам класса без прокрутки ползунка окна исходника, что экономит время на поиске нужного метода. А фишка Compare With -> Local History покажет все сделанные изменения исходника и позволит сделать откат на нужную дату или время (типа встроенного svn'a). Зная о всех этих возможностях и о том, что еще предстоит узнать отказываться о такой бесплатной кроссплатформенной конфетки не хочется.

Автор: Denjs 11.3.2008, 23:44
немного оффтопа - )

вот именно qt + eclipse + ... + qt eclipse integration и интересует... откуда начать рыть? не толкнёте?
в свое время не вышло у меня с этим, а потом не до этого было...

Автор: SABROG 12.3.2008, 01:11
Цитата(Denjs @ 11.3.2008,  23:44)
немного оффтопа - )

вот именно qt + eclipse + ... + qt eclipse integration и интересует... откуда начать рыть? не толкнёте?
в свое время не вышло у меня с этим, а потом не до этого было...

Толкнем:

MinGW 5.1.3 - http://superb-east.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.3.exe
gdb - http://downloads.sourceforge.net/mingw/gdb-6.7.50.20071127-mingw.tar.bz2
Qt 4.3.4  - ftp://ftp.trolltech.com/qt/source/qt-win-opensource-4.3.4-mingw.exe (исходники, я всегда собираю сам через mingw, после компиляции папочка с Qt может весить 6 гигабайт)
Eclipse (с CDT)- http://eclipse.a3-system.be/technology/epp/downloads/release/europa/winter/eclipse-cpp-europa-winter-win32.zip
Qt Eclipse Integration - http://trolltech.com/developer/download/qt-eclipse-integration-win32-1.0.1.exe
Subclipse 1.2.4 - http://subclipse.tigris.org/files/documents/906/39522/site-1.2.4.zip

Иногда eclipse может сказать что ему памяти не хватает, при индексации, решается редактированием файла eclipse.ini, увеличиванием порога максимально отводимой памяти.

Когда все установишь попытайся пройти Cheat Sheet, который появится при запуске eclipse после установки интегратора.
По началу трудно разобраться с workspace и working sets. И в том где хранит eclipse файлы проектов. По сути нет никаких файлов проектов, есть только файлы на винчестере. Есть разве что окружение и некоторые параметры для проекта (файлы .cproject, .project и папка .settings). Чтобы работал отладчик надо правильно прописать пути. Вообще, чтобы поменьше косяков с путями было я создал себе батник для запуска eclipse:

Код

@echo off
set MINGW=C:/MinGW
set QMAKESPEC=win32-g++
set QTDIR=D:/Work/qt-win-opensource-src-4.4.0-beta1
set PATH=%QTDIR%/bin;%MINGW%/bin;C:/dbg/bin;%PATH%
set LIB=%MINGW%/lib;%QTDIR%/lib
set INCLUDE=%MINGW%/include;%QTDIR%/include
set PATH=%PATH%;C:\eclipse
call "C:\Eclipse\eclipse.exe"


Пути прописать по вкусу...

Автор: Denjs 12.3.2008, 03:55
вух) спасибо.. буду искать толстый инет... а потом разбираться как это все повторить под линухом )))

Автор: just_geek 12.3.2008, 09:09
Цитата

Как бесплатная и мощная альтернатива студии - тот же Eclipse с соответствующим плагином, это если стоит вопрос о лицензионности, ведь MS тоже денег достаточно больших стоит.


Ну я использую Visual Studio 2008 Express Edition + QT 4.3.4 никаких проблем smile и, самое главное, денег никому не должне smile
А то mingw раздражает жутко: тормоз, генерирует большие бинарники, плюс куча проблем с winapi. Вообщем в топку пока, дождусь когда gcc 4.x портируют, может чего и изменится к тому времени.

Автор: SABROG 12.3.2008, 09:23
Ради интереса, сколько у тебя весит файл \examples\widgets\calculator\release ? У меня 60kb, собран mingw.
Насчет портирования новых версий gcc, давно уже есть интузиасты, которые выкладывают целые сетапы с mingw, где стоит последняя сборка gcc. Надо только отметить то, что этот новый gcc может не скомпилить исходники. Сам лично ставил и пытался собрать что-то, не вышло. Насчет тормознутости, программы скомпиленные через mingw работают в среднем на 3-4% медленней программ msvc, а в некоторых ситуациях и быстрее. Правда я замерял по статическому fps в трехмерной игрухе, которую собирал различными компиляторами. А в чем сложности с API ? Косяки у меня были только если хидеры устаревшие.

Автор: just_geek 12.3.2008, 10:01
Под тормозом я имел ввиду сам компилятор, vc++ раза в 2-3 быстрее компилит мой проект, даже если в обоих случаях используются precompiled headers.

Теперь по поводу api:
Попробуй подключить mprapi.h, там почему то прописаны функции доступные только в Windows 2008 Server, и структур которые используются в качестве параметров, в нем тоже нету... Ну по мелочам, отсутствует функция IsUserAnAdmin в shlobj.h и пр... Все это актуально для последней версии winapi-3.11

По поводу размера бинарников:
\examples\widgets\calculator\release - 32 кб
Сам qt 4.3.4 (все DLL) порядка 13 мб, на mingw это было порядка 21 мб... 

Автор: Lazin 12.3.2008, 10:02
правда-ли что eclipse тормозит на больших проектах? (интерес чисто спортивный  smile )

Автор: andrew_121 12.3.2008, 10:16
Lazin: eclipse - ваще Ж**А... ИМХО

Автор: just_geek 12.3.2008, 12:22
А кто-нибудь имел извращенный опыт работы с Eclipse + qt eclipse integrator + VC++ ? smile

Автор: SABROG 12.3.2008, 12:33
Кстати что касается всплывающих подсказок типа параметров для функций, то у меня Delphi думал по несколько секунд, а тут моментально.

Размеры объясняются включением собственного CRT в exe, msvc юзает системный из dll, который идет в поставке с виндой. Наверно многие встречались с косяками, когда программы откомпиленные на msvc отказывались запускаться и вместе с прогой шли одни из эти этих файлов:

Цитата

msvcirt.dll
msvcm80.dll
msvcm80d.dll
msvcp50.dll
msvcp60.dll
msvcp71.dll
msvcp80.dll
msvcp80d.dll
msvcr70.dll
msvcr71.dll
msvcr80.dll
msvcr80d.dll
msvcrt.dll
msvcrt20.dll
msvcrt40.dll


С другой стороны не вижу смысла вообще объяснять разницу и оправдывать компилятор. Сейчас уже никто не обращает внимания весит фильм 700 мегабайт или это 4гигабайтный DVD рип.

Eclipse жрет много оперативы при индексации, но потом ее освобождает. А когда меняются файлы исходников он переиндексирует обычно только их это секундное дело. Т.ч. не удивительно, что по-началу для нового большого проекта eclipse будет долго все индексировать.

Проблемы с хидерами mingw были всегда, в конце концов не mingw их пишет, а microsoft, потому и идет рассинхронизация со студией. Тем более когда речь заходит о хидерах 2008 года. Даже в этом случае можно взять хидер msvc и адаптировать под mingw или тупо скопировать нужную структуру в хидеры своего проекта.

Лично видел компиляцию mozilla на eclipse, ничего страшного и жутко тормозного там небыло. Показали и процесс индексации и изминение исходников.

Автор: Любитель 16.3.2008, 13:38
Цитата(Denjs @  11.3.2008,  22:35 Найти цитируемый пост)
в kate не хватает только дерева свойств и методов класса,... может интерактивной помощи и подсказок по методам qt-классов.. а в остальном IDE имхо и не сильно нужен. по крайней мере в не-сильно больших проектах...

Не, иде - это хорошо. smile Хотя для маленьких проектов мжно обойтись текст-эдитором.. Холииварить не будем )))

Цитата(Denjs @  11.3.2008,  22:35 Найти цитируемый пост)
Платная версия QT с интеграцией с VC как я понимаю просто меняет qmake и генерит код который будет нормально восприниматься майкрософтовским компилятором.

Интегратор для VC++ тупо пописывает для каждого хейдера (при его добавлении в проект) кастом билд в виде вызов кумейка. Ну плюс встраивание хелпа в МСДН (нафига?), интеграция дизайнера в студию и редактор qrc.

Цитата(Denjs @  11.3.2008,  23:44 Найти цитируемый пост)
вот именно qt + eclipse + ... + qt eclipse integration и интересует... откуда начать рыть?

Я уже говорил - я так против интегратора трольтечевского. Без него только лучше smile Это относится и к VS, и к эклипсу.

Цитата(SABROG @  12.3.2008,  01:11 Найти цитируемый пост)
Когда все установишь попытайся пройти Cheat Sheet, который появится при запуске eclipse после установки интегратора.

Красиво выразилcя smile

Цитата(just_geek @  12.3.2008,  12:22 Найти цитируемый пост)
Eclipse + qt eclipse integrator + VC++ ?

Эээ...?

Автор: powerfox 16.3.2008, 15:02
Цитата(Denjs @  11.3.2008,  23:35 Найти цитируемый пост)
Для удобства можно вывод через  
 | grep error 

Ошибки должны писаться в stderr, поэтому можно перенаправить этот поток, куда надо.
Да и make имеет настройки «болтливости», поэтому никаких читов здесь не надо.

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