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


Автор: andrew_121 14.8.2009, 22:34
Собираю Qt, ту же версию, тем же компилятором. И вот что получаю:
Код

C:/qt/bin/moc.exe -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEFILE_SUPPO
RT -DBUILDING_QT__=1 -DUSE_SYSTEM_MALLOC -DNDEBUG -DQT_MAKEDLL -DQT_NO_CAST_TO_A
SCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -D_USE_MATH_DEFINES
-DBUILD_WEBKIT -D_HAS_TR1=0 -DENABLE_OFFLINE_WEB_APPLICATIONS=1 -DENABLE_DOM_STO
RAGE=1 -DENABLE_ICONDATABASE=1 -DENABLE_DATABASE=1 -DENABLE_DASHBOARD_SUPPORT=0
-DENABLE_XPATH=1 -DENABLE_WML=0 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_SVG
_FILTERS=1 -DENABLE_SVG_FOREIGN_OBJECT=1 -DENABLE_SVG_ANIMATION=1 -DENABLE_SVG_A
S_IMAGE=1 -DENABLE_SVG_USE=1 -DENABLE_VIDEO=0 -DENABLE_NETSCAPE_PLUGIN_API=1 -DW
TF_USE_JAVASCRIPTCORE_BINDINGS=1 -DWTF_CHANGES=1 -DBUILDING_QT__ -DSQLITE_CORE -
DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DQT_DLL -DQT_GUI_LIB -DQT_NE
TWORK_LIB -DQT_CORE_LIB @tmp\moc\debug_shared\mocinclude.tmp -D__GNUC__ -DWIN32
../JavaScriptCore/wtf/qt/MainThreadQt.cpp -o tmp/moc/debug_shared/MainThreadQt.m
oc
moc: Cannot open options file specified with @
Usage: moc [options] <header-file>
  -o<file>           write output to file rather than stdout
  -I<dir>            add dir to the include path for header files
  -E                 preprocess only; do not generate meta object code
  -D<macro>[=<def>]  define macro, with optional definition
  -U<macro>          undefine macro
  -i                 do not generate an #include statement
  -p<path>           path prefix for included file
  -f[<file>]         force #include, optional file name
  -nw                do not display warnings
  @<file>            read additional options from file
  -v                 display version of moc
gmake[2]: *** [tmp/moc/debug_shared/MainThreadQt.moc] Error 1
gmake[2]: Leaving directory `c:/qt/src/3rdparty/webkit/WebCore'

Какие соображения?

п.с.
думал испортился архив, перезалил. Так же.

Автор: SABROG 14.8.2009, 23:32
cygwin или msys?

В общем проблема вот в чем. На Windows 2000 и младше размер буфера командной строки очень ограничен по сравнению с Windows XP и выше. В результате большого количества файлов передающегося для сборки webkit через командную строку компилятору, библиотека webkit не собирается. Я слал багрепорт по этому поводу троллям. Они это дело пофиксили следующим образом. Прежде чем компилировать webkit создается временный файл, куда "сливается" содержимое десятков хедеров. Т.е. получается один большой хедер. Это влияет на время компиляции библиотеки, но она хоть начинает собираться. В .pro файле идет проверка на операционную систему win32 и Qt начинает использовать пути с обычный для win32 слешем "\". В MSYS и cygwin этот слэш в путях, естественно, не прокатывает. Я писал троллям об этой проблеме тоже. На данный момент билд Qt в MSYS можно считать запоротым. Обычная консоль и MinGW собирает нормально.

Автор: andrew_121 14.8.2009, 23:41
SABROG, Mingw. Ничего экзотического. Все как обычно.

Автор: SABROG 14.8.2009, 23:45
Цитата(andrew_121 @ 14.8.2009,  23:41)
SABROG, Mingw. Ничего экзотического. Все как обычно.

А кто такой gmake? И куда ты дел mingw32-make?

Автор: andrew_121 14.8.2009, 23:54
Цитата(SABROG @  14.8.2009,  23:45 Найти цитируемый пост)
А кто такой gmake? И куда ты дел mingw32-make?

Я всегда создаю копию mingw32-make с именем gmake.

Добавлено через 4 минуты и 18 секунд
Так я всегда так собирал. В обычной виндовой консоле.
Как собрать без вебкита?

Автор: SABROG 15.8.2009, 00:02
Цитата(andrew_121 @  14.8.2009,  23:54 Найти цитируемый пост)
Я всегда создаю копию mingw32-make с именем gmake.

Зачем? Может ты промахнулся и цепанул make от MSYS или в Qt где-то зависимый код проверяет название мейкера?

Цитата

Как собрать без вебкита?


Как обычно configure -no-webkit

Автор: andrew_121 15.8.2009, 00:07
Цитата(SABROG @  15.8.2009,  00:02 Найти цитируемый пост)
Зачем? Может ты промахнулся и цепанул make от MSYS или в Qt где-то зависимый код проверяет название мейкера?

Нет, все в порядке с этим. Года четыре так делаю. Никогда не было проблем. Странно...что с консолью могло случиться?...

Добавлено через 3 минуты и 35 секунд
Запустил с mingw32-make, все то же.

Автор: SABROG 15.8.2009, 00:19
Файл tmp\moc\debug_shared\mocinclude.tmp существует? Место на диске есть?

Автор: andrew_121 15.8.2009, 00:46
Место есть.
Файла нет. Что делать? С начала все начинать?

Автор: andrew_121 1.9.2009, 17:13
Опять попытался собрать. Та же хрень. И нет файла tmp\moc\debug_shared\mocinclude.tmp
Что делать?

Добавлено через 32 секунды
Собираю в мингвовской консоле.

Автор: andrew_121 2.9.2009, 00:32
Ну что, никто не собирает Qt из сорцов? Все SDK юзают?

Автор: kemiisto 2.9.2009, 00:47
Цитата(andrew_121 @  2.9.2009,  01:32 Найти цитируемый пост)
Ну что, никто не собирает Qt из сорцов? Все SDK юзают?

Я собираю. Почти каждую неделю. smile Проблем нет.

Автор: andrew_121 2.9.2009, 02:18
Цитата(kemiisto @  2.9.2009,  00:47 Найти цитируемый пост)
Я собираю. Почти каждую неделю. smile Проблем нет. 

Под виндой? Рассказывай.

Добавлено через 39 секунд
Кстати. микрософтовским компилятором собирается. так что консоль тут не при чем.

Автор: kemiisto 2.9.2009, 10:55
Цитата(andrew_121 @  2.9.2009,  03:18 Найти цитируемый пост)
Под виндой? Рассказывай.

И под Виндой в том числе. У меня MinGW TDM'овский. Предидущий релиз. 4.4.0.

Автор: SABROG 3.9.2009, 15:17
Какая винда, откуда качал исходники? Какие ключи конфигурации?

Автор: andrew_121 3.9.2009, 16:28
Цитата(SABROG @  3.9.2009,  15:17 Найти цитируемый пост)
Какая винда, откуда качал исходники? Какие ключи конфигурации? 

XP SP3.
Качал с офф. фтп, 4.5.2.
Никаких ключей. просто configure.exe

Автор: andrew_121 3.9.2009, 18:47
Может кто соберет для меня и выложит куда-то на файлообменник? Плиз smile 

Автор: SABROG 3.9.2009, 20:12
Цитата(andrew_121 @ 3.9.2009,  18:47)
Может кто соберет для меня и выложит куда-то на файлообменник? Плиз smile

Ага, 3Гига зазиповать (без examples и demos) и на рапидшару со скоростью 20Кб в секунду  smile 

Автор: andrew_121 3.9.2009, 20:49
Цитата(SABROG @  3.9.2009,  20:12 Найти цитируемый пост)
Ага, 3Гига зазиповать

Около 2.6 гига. 7-zip в "ультра" сжатии ужимается до 160 мег.

Цитата(SABROG @  3.9.2009,  20:12 Найти цитируемый пост)
со скоростью 20Кб в секунду

Это на слив там такая скорость? На http://rghost.ru/ можно, там нет такого ограничения.

Ну нет, так нет :(

Автор: andrew_121 5.9.2009, 03:25
...

Автор: andrew_121 5.9.2009, 05:52
Рано обрадовался.
Код

Creating library file: c:/Qt/qt/lib/libQtWebKitd4.a
./tmp/obj/debug_shared/QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x5a): undefined reference to `vtable for WebCore::FormDataIODevice'
./tmp/obj/debug_shared/QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x12c): undefined reference to `vtable for WebCore::FormDataIODevice'
./tmp/obj/debug_shared/QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x1f1): undefined reference to `vtable for WebCore::FormDataIODevice'
./tmp/obj/debug_shared/QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x293): undefined reference to `vtable for WebCore::FormDataIODevice'
./tmp/obj/debug_shared/QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x335): undefined reference to `vtable for WebCore::FormDataIODevice'
./tmp/obj/debug_shared/QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x898): undefined reference to `vtable for WebCore::QNetworkReplyHandler'
./tmp/obj/debug_shared/QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0xad0): undefined reference to `vtable for WebCore::QNetworkReplyHandler'
./tmp/obj/debug_shared/FrameLoaderClientQt.o:FrameLoaderClientQt.cpp:(.text+0x2fd9): undefined reference to `QWebPage::unsupportedContent(QNetworkReply*)'
./tmp/obj/debug_shared/FrameLoaderClientQt.o:FrameLoaderClientQt.cpp:(.text+0x3b4d): undefined reference to `QWebPage::downloadRequested(QNetworkRequest const&)
'
collect2: ld returned 1 exit status

какие соображения?

Добавлено через 6 минут и 12 секунд
Нашел http://www.qtcentre.org/forum/f-installation-and-deployment-5/t-qt-opensource-452-wont-compile-22027.html Но при чем тут фонон. Хотя и его уже собрал. Успешно.

Автор: andrew_121 5.9.2009, 15:39
Выяснил следующее. Ошибка из первого поста, проявляется только если собираю qt-win-opensource-src-4.5.2.zip
Если собираю сорцы из SDK, то последняя ошибка.

Разве никто не собирает из сорцов? Или у всех собирается без проблем? Что, я один такой?

Автор: SABROG 5.9.2009, 19:37
Цитата(andrew_121 @  5.9.2009,  15:39 Найти цитируемый пост)
Разве никто не собирает из сорцов?

Я качаю архив для всех платформ ftp://ftp.trolltech.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz и обычно собираю.

Автор: andrew_121 6.9.2009, 03:16
Цитата(SABROG @  5.9.2009,  19:37 Найти цитируемый пост)
Я качаю архив для всех платформ ftp://ftp.trolltech.com/qt/source/qt-all-...rc-4.5.2.tar.gz и обычно собираю. 

Попробовал. Ошибка из первого поста. Нет там этого файла. Не понятно как он там ваще появляется!

Автор: andrew_121 7.9.2009, 00:22
Понял в чем проблема!
Файл: tmp\moc\debug_shared\mocinclude.tmp на самом деле зовется tmpmocdebug_sharedmocinclude.tmp smile  И лежит он в: C:\qt\src\3rdparty\webkit\WebCore
Т.е. ошибка со слешами.
После копирования его куда нужно, с нужным именем, сборка прошла. Осталось только понять кто его генерит, и исправить.

SABROG, Как исправлю, запостишь на qtcentre в багрепорт?

Автор: SABROG 8.9.2009, 19:21
Тут возникает закономерный вопрос. Откуда в обычной консоли windows проблема с её нативными слешами? Я бы понял, если бы ты собирал в MSYS/cygwin, но раз ты говоришь, что нет... мистика.

Возможно проблема в экранированием слешей в каком-то .pro файле, там как раз формат обязывает, причем не важно на какой ОС.

Цитата(andrew_121 @  7.9.2009,  00:22 Найти цитируемый пост)
SABROG, Как исправлю, запостишь на qtcentre в багрепорт?

А при чем здесь qtcentre? smile Или речь о tasktracker'e? Вообще я об этом уже создавал багрепорт, но толи меня не поняли, толи просто проигнорили, я не знаю. Причем тролли могут не отвечать неделями, а могут и вовсе не ответить ничего, я это уже проходил. А могут просто поставить багрепорту статус Pending и баг будет висеть несколько релизов, такое тоже было.

В общем задача найти файл, где слэши виндовые и одинарные.

Автор: andrew_121 8.9.2009, 19:25
Цитата(SABROG @  8.9.2009,  19:21 Найти цитируемый пост)
мистика. 

вот и я об этом.

Автор: SABROG 8.9.2009, 20:03
Проблема в файле $QTDIR/mkspecs/features/moc.prf

Код

# On Windows, put the includes into a .inc file which moc will read, if the project
# has too many includes. We do this to overcome a command-line limit on Win < XP
INCLUDETEMP=
WIN_INCLUDETEMP=
win32:count($$list($$INCPATH), 40, >) {
    INCLUDETEMP = $$MOC_DIR/mocinclude.tmp

    # Remove any existing mocinclude.tmp when qmake runs
    WIN_INCLUDETEMP=$$INCLUDETEMP
    WIN_INCLUDETEMP~=s,/,\,g
    system($$QMAKE_DEL_FILE $$WIN_INCLUDETEMP > NUL 2>&1)

    EOC = $$escape_expand(\n\t)

    if(contains(TEMPLATE, "vc.*")|contains(TEMPLATE_PREFIX, "vc")) {
        # the VCPROJ generator will replace the \r\h with the coded \r\n: &#x0d;&#x0a;
        # No other generator understands the \h
        if(win32-msvc.net|win32-msvc2*|wince*msvc*): EOC = $$escape_expand(\r\h)
        else: EOC = $$escape_expand(\\)$$escape_expand(\n\t)
    }

    unset(INCFILELIST)
    RET =
    for(incfile, $$list($$INCPATH)) {
        INCFILELIST = -I$$incfile
        isEmpty(RET): RET += @echo $$INCFILELIST> $$WIN_INCLUDETEMP $$EOC
        else:         RET += @echo $$INCFILELIST>> $$WIN_INCLUDETEMP $$EOC
    }
    !isEmpty(INCFILELIST):RET += @echo $$INCFILELIST>> $$WIN_INCLUDETEMP $$EOC

    build_pass|isEmpty(BUILDS) {
        mocinclude.target = $$INCLUDETEMP
        mocinclude.commands = $$RET
        QMAKE_EXTRA_TARGETS += mocinclude
    }



Удали эти строчки, в репозитории их уже нет:
Код

    # Remove any existing mocinclude.tmp when qmake runs
...
    WIN_INCLUDETEMP~=s,/,\,g
    system($$QMAKE_DEL_FILE $$WIN_INCLUDETEMP > NUL 2>&1)


И пересобери Qt.

Автор: andrew_121 8.9.2009, 20:44
Цитата(SABROG @  8.9.2009,  20:03 Найти цитируемый пост)
Проблема в файле $QTDIR/mkspecs/moc.prf

наверное с путем ошибся smile 
$QTDIR/mkspecs/features/moc.prf

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