Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: konstantin от Январь 17, 2012, 17:40



Название: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: konstantin от Январь 17, 2012, 17:40
Здравствуйте!

Требуется написать кое-какую софтину на qt под МСВС. МСВС получил ввиде виртуального жесткого диска для VBOX.
МСВС версии 3.0. Вскрытие показало, что на него поставлена библиотека Qt 4.4.2. Еще стоит Designer. Решил поставить версию библиотеки посвежее. На форумах почитал, что народ собирал библиотеку 4.5.1 из исходников. Скачал исходники библиотеки и попробовал собрать по методике описанной в источнике: http://doc.crossplatform.ru/qt/4.5.0/install-x11.html
после выполнения команды make, gcc пыхтел несколько часов, после чего встал с ошибками:

mainwindow.cpp: In member function `virtual void
   MainWindow::paintEvent(QPaintEvent*)':
mainwindow.cpp:115: error: syntax error before `/' token
mainwindow.cpp:115: error: no matching function for call to `QLinearGradient::
   QLinearGradient(int, int)'
../../../src/gui/painting/qbrush.h:263: error: candidates are:
   QLinearGradient::QLinearGradient(const QLinearGradient&)
../../../src/gui/painting/qbrush.h:267: error:
   QLinearGradient::QLinearGradient(double, double, double, double)
../../../src/gui/painting/qbrush.h:266: error:
   QLinearGradient::QLinearGradient(const QPointF&, const QPointF&)
../../../src/gui/painting/qbrush.h:265: error:
   QLinearGradient::QLinearGradient()
mainwindow.cpp:115: error: syntax error before `)' token
mainwindow.cpp:117: error: request for member `setColorAt' in `gradient', which
   is of non-aggregate type `QLinearGradient ()(...)'
mainwindow.cpp:118: error: request for member `setColorAt' in `gradient', which
   is of non-aggregate type `QLinearGradient ()(...)'
mainwindow.cpp:119: error: request for member `setColorAt' in `gradient', which
   is of non-aggregate type `QLinearGradient ()(...)'
mainwindow.cpp:122: error: invalid conversion from `QLinearGradient (*)(...)'
   to `unsigned int'
mainwindow.cpp:122: error:   initializing argument 1 of `
   QColor::QColor(unsigned int)'
mainwindow.cpp:133: error: no match for call to `(QLinearGradient) (int, int)'
make[3]: *** [.obj/release-shared/mainwindow.o] ошибка 1
make[3]: Leaving directory `/tmp/qt-x11-opensource-src-4.5.1/examples/xmlpatterns/trafficinfo'
make[2]: *** [sub-trafficinfo-make_default] ошибка 2
make[2]: Leaving directory `/tmp/qt-x11-opensource-src-4.5.1/examples/xmlpatterns'
make[1]: *** [sub-xmlpatterns-make_default] ошибка 2
make[1]: Leaving directory `/tmp/qt-x11-opensource-src-4.5.1/examples'
make: *** [sub-examples-make_default-ordered] ошибка 2
[root@mcbc_3_2 qt-x11-opensource-src-4.5.1]# 

gcc версии 2.95

Подскажите, что не так???


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: kambala от Январь 17, 2012, 18:56
в строке конфигурации укажи -nomake examples (ещё можно -nomake demos) чтобы не собирать примеры.

и я не совсем понял при чём тут gcc, если ты собираешь для студии.

p.s. использовать студию 3 (2003 .НЕТ я так понимаю) - извращенцы ещё те :)


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: Hellraiser от Январь 17, 2012, 20:45
МСВС - это не MSVS, это Мобильная Система Вооруженных Сил, или по-простому, Линух со старым ядром и урезанными возможностями. А по делу - 4-ю версию надо собирать с gcc 3-й версии и более. Для этого надо переключать компилятор. Как, сейчас на память не вспомнить (МСВС растаяла как страшный сон), но на форуме такие топики были.


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: kambala от Январь 17, 2012, 21:10
оу, вот оно что. то-то я еще думаю - при чем там линуксовая командная строка :)

в любом случае, у автора вылазит ошибка при компилировании примеров, а ведь они компилируются уже после самой библиотеки, да?


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: Hellraiser от Январь 17, 2012, 21:20
Может по инклюдам и либам цепляться к старой версии, там еще надо пошаманить с окружением. Немного оффтопа - какой смысл ставить версию Кьюта, отличный от системного? Такое приложение не пройдет сертификацию, а если просто самому захотелось побаловаться - то имхо не та система, очень отдает садо-мазо.


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: LisandreL от Январь 17, 2012, 23:19
Немного оффтопа - какой смысл ставить версию Кьюта, отличный от системного? Такое приложение не пройдет сертификацию, а если просто самому захотелось побаловаться - то имхо не та система, очень отдает садо-мазо.
При статичской линковке скомпилированный исполняемый файл будет работать на чистой МСВС. Слышал чт с этим можно пройти сертификацию (хотя опыта не было).
Ну и если верить вики, то в теперешних версиях вообще 4.6.3.


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: konstantin от Январь 19, 2012, 09:48
Начинаю приходить к выводу, что проще использовать версию библтотек, которая стоит по умолчанию.
Народ, а как пришпилить к библиотеке 4.4.2 Creator?


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: Hellraiser от Январь 19, 2012, 10:28
Насчет креатора не подскажу, возможно без бубна и никак, т.к. он завязан на конкретные версии библиотек Кьюта. Поступай проще - скачай нужную версию под вижуал студию, лучше 2005, создай и отладь полностью проект в ней. Как все будет готово - перекодируй в КОИ-8 исходники (если пользовался русскими строками и комментами), концы строк преобразуй в линуксовый (Notepad++ тебе в помощь), перетащи проект в МСВС, компилируй в командной строке и усе. Не забываем о именах файлов в проекте и инклюдах (Линукс регистрозависимый, в отличии от винды).


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: mutineer от Январь 19, 2012, 11:25
В криейторе выбираешь Инструменты - Параметры - Qt4 - Профили Qt - Нажимаешь + - вписываешь название и указываешь путь к нужному qmake

Теперь при создании/открытии проекта можно указать для какий кутей его собирать.
Для разных версий криейтора местонахождение настройки может меняться


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: konstantin от Январь 19, 2012, 13:16
Поставил Creator 1.2.1. В окошко настройки версии qt добавил путь: /usr/lib/qt4/bin/
Создал проект, попробовал собрать. Выдает ошибку: "Не выбрана корректная версия Qt..."


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: mutineer от Январь 19, 2012, 13:18
попробуй /usr/lib/qt4/bin/qmake вписать


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: konstantin от Январь 19, 2012, 13:50
Автоопределение нормально заработало)


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: konstantin от Январь 20, 2012, 10:11
Возник еще один интересный момент. Не собирается библиотека qextserialport. Сначала не смог отыскать пару заголовочных файлов. Закомментировал строки включения, начал ругаться на то, что не может найти некоторые поля в определенной структуре...


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: kuzulis от Январь 20, 2012, 11:30
Цитата: kambala
в строке конфигурации укажи -nomake examples (ещё можно -nomake demos) чтобы не собирать примеры.
Не, для *nix это не работает вроде.
Вместо этого надо в исходниках самой Qt править файл проекта - закомментировать
сборку этих субпроектов:
Цитировать
...
    } else:isEqual(PROJECT, examples) {
       #SUBDIRS += examples
    } else:isEqual(PROJECT, demos) {
       #SUBDIRS += demos
    } else:isEqual(PROJECT, libs) {
...

Цитата: konstantin
Возник еще один интересный момент. Не собирается библиотека qextserialport. Сначала не смог отыскать пару заголовочных файлов. Закомментировал строки включения, начал ругаться на то, что не может найти некоторые поля в определенной структуре...
Ну так исходники то открыты.

Попробуй другую либу http://gitorious.org/qserialdevice/qserialdevice/trees/2.0
Если ты делаешь проект в МСВС именно для МО, а не просто так - то я подскажу если чо по этой либе!
Я заинтересован в обороноспособности родимой страны! :)

А если делаешь просто так - то сам разбирайся!


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: konstantin от Январь 20, 2012, 11:52
Спасибо конечно, но с qextserialport я уже работал и хотелось бы использовать ее.

Вот что выдается при сборке:
Запускается: /usr/bin/qmake4 /root/QtProjects/serial/qextserialport-1.2win-alpha/qextserialport.pro -spec /usr/lib/qt4/mkspecs/linux-g++ -r CONFIG+=debug
Завершено с кодом возврата 0.
Запускается: /usr/bin/make -w
make: Entering directory `/root/QtProjects/serial/qextserialport-1.2win-alpha'
/usr/bin/make -f Makefile.Debug
make[1]: Entering directory `/root/QtProjects/serial/qextserialport-1.2win-alpha'
g++ -c -pipe -g -D_REENTRANT -Wall -W -fPIC -D_TTY_POSIX_ -DQT_CORE_LIB -DQT_SHARED -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/lib/qt4/include/QtCore -I/usr/lib/qt4/include/QtCore -I/usr/lib/qt4/include -Ibuild/moc -I. -o build/obj/qextserialenumerator.o qextserialenumerator.cpp
qextserialenumerator.cpp:9:21: objbase.h: Нет такого файла или каталога
qextserialenumerator.cpp:10:22: initguid.h: Нет такого файла или каталога

В гуглях няшел подобную проблему, но не понял, как она решается:
http://groups.google.com/group/qextserialport/browse_thread/thread/be70140c383bf388?pli=1


Название: Re: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС
Отправлено: konstantin от Январь 20, 2012, 13:12
Проблема стала яснее. Скачал другую версию библиотеки, данных ошибок при сборке не возникает. Зато появляются другие =) Похоже, теперь она не дружит с моей версией библиотек Qt