LINUX.ORG.RU

Запустить компиляцию qt3 приложения. Как правильно задать пути и что случилось с configure?


0

0


Здравствуйте!

Пытаюсь скомпилировать qt3 приложение в Ubuntu 7.04, но не получается. Компиляцию делаю согласно readme, где написано что нужно сделать configure, make, make install.


1.

Запуск configure происходит нормально. Но на этапе make сначала были ошибки типа

In file included from finddlgimpl.cpp:18:
finddlgimpl.h:21:21: error: qwidget.h: No such file or directory
In file included from finddlgimpl.h:22,
from finddlgimpl.cpp:18:
./finddlg.h:12:22: error: qvariant.h: No such file or directory

Их я поборол путем удаления файла config.cache, потом make clean, потом запуск configure с ключем includedir

./configure --includedir=/usr/include/qt3

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


2.

В make стали появляться другие ошибки, вот такие

make[3]: Entering directory `/home/xi/work/ubuntu_compilpro/qt/qtedit/qtedit'
/usr/lib/qt3/bin/uic -L @kde_widgetdir@ -nounload -o finddlg.h ./finddlg.ui
make[3]: /usr/lib/qt3/bin/uic: Команда не найдена
make[3]: *** [finddlg.h] Ошибка 127

Файла /usr/lib/qt3/bin/uic у меня действительно нет, у меня он находится в другой директории - /usr/share/qt3/bin/uic. Ну и вообще в директории /usr/share/qt3 у меня видимо кроме заголовков и находится все что нужно для qt3, ибо в нем имеем подкаталоги

bin
doc
lib
mkspecs
translations

Для сборки я пробовал использовать такие команды (вначеле всегда удаляя config.cache и делаю make clean)

./configure --includedir=/usr/include/qt3 --bindir=/usr/share/qt3 --libdir=/usr/share/qt3

./configure --includedir=/usr/include/qt3 --bindir=/usr/share/qt3/bin --libdir=/usr/share/qt3/lib

Но тогда configure вообще нормально завершиться не может

checking for Qt... configure: error: Qt (>= Qt 3.0.3) (headers and libraries) not found. Please check your installation!
For more details about this problem, look at the end of config.log.


Гдето нашел рекомендацию что в PATH нужно добавить путь

export PATH=/usr/share/qt3:$PATH

но после этой команды тоже configure завершается с ошибкой.



СЕЙЧАС ВООБЩЕ ОБНАРУЖИЛ ДИКУЮ СИТУАЦИЮ.
---------------------------------------

Почему-то команды (из пункта 1)

./configure или
./configure --includedir=/usr/include/qt3

тоже не могут нормально завершиться, дают ошибку "checking for Qt... configure: error: Qt (>= Qt 3.0.3)...", хотя в логе консоли вижу, что они ранее завершались нормально! И это при том что никаких библиотек не переставлял, каталогов не переносил, линки не делал.

Закрыл Konsole вообще, открыл заново - снова удаляем config.cache, удаляем config.log, затем "./configure" или "./configure --includedir=/usr/include/qt3" - завершается с ошибкой "checking for Qt... configure: error: Qt (>= Qt 3.0.3)..."!

В логе config.log вижу такое

tried /usr/lib/qt3/lib
tried /usr/lib/qt3
tried /usr/lib/qt/lib
tried /usr/lib/qt
tried /usr/X11R6/lib
configure:6855: rm -rf SunWS_cache; c++ -o conftest -O2 -fno-exceptions -fno-check-new -INO -I.
conftest.C:2:21: error: qglobal.h: No such file or directory
conftest.C:3:26: error: qapplication.h: No such file or directory
conftest.C:4:21: error: qcursor.h: No such file or directory
...

Это при том, что файлы есть

/usr/include/qt3/qglobal.h
/usr/include/qt3/qapplication.h
/usr/include/qt3/qcursor.h


У меня уже голова кругом идет, чего еще нужно?


ВОПРОСА ДВА:

1. Как запустить configure чтоб завершалось без ошибок? (и почему оно перестало работать???)
2. Как запустить make чтоб завершалось без ошибок?


хз. а QTDIR установлен?

попробуй strace натравить на fopen на configure, посмотри, где он файлы ищет. Попробуй понаделать линков туда, где он ищет.

>"checking for Qt... configure: error: Qt (>= Qt 3.0.3)..."

а что за приложение-то? просит древней версии Qt. Попробуй обновить приложение, установить qt 3.0.3 которую он хочет.

Как вариант, посмотреть Makefile.am на предмет версии и обновить версию вручную (вдруг соберется), посмотреть ./configure на предмет того, где он ищет (поиском по tried ... что там у тебя, лурканьем в районе 6855 строки и ниже)

Попробовать поставить симлинк туда, где он ищёт (чтобы прошло tried tried /usr/lib/qt3/lib например, sudo ln -svi /usr/share/qt3/lib /usr/lib/qt3/lib). Походу, не находит --libdir.

---

BTW, народ, кто подскажет, как по уму поставить side-by-side Qt3 и Qt4? и собрать что-то с Qt3 (например, тот же ананас, у него порт под Qt4 немного не допилен). Можно в генте как-то слоты сделать (ебилд x11-libs/qt в портеже вроде не слотовый) и сделать что-то вроде eselect или только ручками с исходниками в sandbox'е и QTDIR с configure на sandbox?

anonymous
()

посмотреть .pro или Makefile.am на предмет путей

anonymous
()
Ответ на: комментарий от anonymous

>sudo ln -svi /usr/share/qt3/lib /usr/lib/qt3/lib

или sudo ln -svi /usr/share/qt3 /usr/lib/qt3

anonymous
()

>Гдето нашел рекомендацию что в PATH нужно добавить путь

>export PATH=/usr/share/qt3:$PATH

попробуй

export QTDIR=/usr/share/qt3

koTuk
()
Ответ на: комментарий от alex_custov

ну например Ananas -- он под Qt 3.3.4, Qsa. У Qsa EOL наступает в декабре 2008, надо бы спортировать под Qt 4 и QtScript. В лоб Ananas под Qt4 не собирается, есть порт в SVN под Qt4, но он вроде бы неполный, да и поставить 2 версии, сравнить-дописать хотелось бы. Поэтому интересно поставить рядышком Qt3 и Qt4, сравнить. Но слотов в портеже генты нет, Qt 4.4 вообще замаскирован -- приходится ручками ставить исходники, собирать отдельно в sandbox'е , настраивать configure. Хотелось бы разобраться со слотами и сделать нормальный ебилд чтобы поставить Qt3 и Qt4 одновременно, и выбирать eselect'ом (типа как java5 и java6 стоит).

anonymous
()
Ответ на: комментарий от anonymous

> а что за приложение-то? просит древней версии Qt. Попробуй обновить приложение

Это пример с CD к книге "Программирование на C++ в Linux", так что обновлений ждать неоткуда. Программа в этом примере называется qtedit.


Впрочем, смог все же собрать этот проект. Надо было в configure указывать не опции --includedir, --bindir, --libdir а другие.

Вот так

./configure --with-qt-dir=/usr/share/qt3 --with-qt-includes=/usr/include/qt3 --with-qt-libraries=/usr/share/qt3/lib


А вот другой проект оттуда же (называется text) собрать немогу. На этапе make имеем какую-то страную ошибку

c++ -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/include/kde -I/usr/include/qt3 -I. -DQT_THREAD_SUPPORT -D_REENTRANT -O2 -fno-exceptions -fno-check-new -c textdoc.moc.cpp
textdoc.moc.cpp:17:2: error: #error "This file was generated using the moc from 3.0.5. It"
textdoc.moc.cpp:18:2: error: #error "cannot be used with the include files from this version of Qt."
textdoc.moc.cpp:19:2: error: #error "(The moc has changed too much.)"
make[2]: *** [textdoc.moc.o] Ошибка 1

Что это за "moc" такой, который не может с данной версией QT работать? Я нашел только что moc - это ncurses based console audio player. При чем тут QT?

xintrea
() автор топика
Ответ на: комментарий от xintrea

вообще, открой Qt Assistant и там найдёшь всё что надо по Qt. В дистрибутиве Qt есть куча хороших примеров.

ЗЫ По симптомам, moc файлы сгенерены отдельно и включены в проект.

alex_custov ★★★★★
()
Ответ на: комментарий от alex_custov

> Скинь этот пример и qtedit куда-нить на хостинг

http://www.bigupload.com/files/89YIX4NII2/qt_from_book.zip.html

В qtedit из всего форматирования только выравнивание текста лево/центр/право сделано. Однако в qt3 элемент QTextEdit глючен, о чем кстати написано в книго, с пожеланием что в следующей версии это возможно исправят.

Посему вопрос - подскажите пожалуста пару _хороших_ ресурсов _на_русском_ (желательно статьи) по QT4 (фиг что нашел, везде реклама книг). И еще бы хотел бы найти рабочий пример "редактора" в QT4, в котором хотя бы выравнивание, bold/italic были сделаны.

xintrea
() автор топика
Ответ на: комментарий от xintrea

Мда, некоторую информацию по Qt4 нашел. И даже нашел описание создания программы в QT4

http://wiki.linuxformat.ru/index.php/LXF78:Qt/KDE (Надо зарегистрироваться в вики чтоб увидеть эту страницу)

но эта дока ориентирована на привязку к KDE. А хотелось бы понять как делать мультиплатформенное приложение на QT4, и к томуже не просто прописывать интерфейс в коде, а пользоваться QT-дизайнером. А как пользовать формы, не используя KDE-шный механизм DCOP - не понял пока.

xintrea
() автор топика
Ответ на: комментарий от xintrea

autotools окружение МЕГАдревнее, и примеры-то для KDE ;)

Выкидывай из проектов всё ненужное, оставляй только .cpp, .h, .ui и .rc файлы.

qtedit.pro:

######################################################################
# Automatically generated by qmake (1.07a) Wed May 14 00:51:48 2008
######################################################################

TEMPLATE = app
INCLUDEPATH += .

# Input
HEADERS += finddlgimpl.h qtedit.h qteditdoc.h qteditview.h
INTERFACES += finddlg.ui
SOURCES += finddlgimpl.cpp main.cpp qtedit.cpp qteditdoc.cpp qteditview.cpp

----------

text.pro:


######################################################################
# Automatically generated by qmake (1.07a) Wed May 14 00:57:51 2008
######################################################################

TEMPLATE = app
INCLUDEPATH += .
INCLUDEPATH += /usr/include/kde

# Input
HEADERS += text.h textdoc.h textview.h
SOURCES += main.cpp text.cpp textdoc.cpp textview.cpp
LIBS    += -lkdeui -lkdecore -lkio

----------

alex_custov ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.