Осло, 25 Июня 2009 – Сегодня Нокия анонсировала выпуск обновлений Qt - библиотеку для разработки кроссплатформенного ПО, и Qt Creator - новая кросплатформенная среда разработки (IDE) Qt-приложений. Оба выпуска доступны как часть новой сборки Qt SDK. Также выпущено обновления Qt Visual Studio Add-in и Qt Eclipse Integration.
Все выпуски доступны для загрузки с http://www.qtsoftware.com/downloads.
http://www.qtsoftware.com/about/news/updates-to-qt-and-qt-creator-released
Изменения:
http://www.qtsoftware.com/developer/changes/changes-4.5.2
http://www.qtsoftware.com/developer/changes/changes-qtcreator-1.2
Грохни мой дубль.
Сделал
У программы configure появился ключик:
-ltcg .............. Use Link Time Code Generation. (Release builds only)
Что он значит?
Судя по документации этот ключ только для MSVC и он предназначен для полной оптимизации кода после компиляции на этапе линковки:
Модуль ScriptTools не собирается:
debugging\qscriptdebuggercodefinderwidgetinterface.cpp:48: error: invalid use of undefined type `struct QScriptDebuggerCodeFinderWidgetInterfacePrivate'
debugging\qscriptdebuggercodefinderwidgetinterface_p.h:62: error: forward declaration of `struct QScriptDebuggerCodeFinderWidgetInterfacePrivate'
debugging\qscriptdebuggercodefinderwidgetinterface.cpp:52: error: invalid use of undefined type `struct QScriptDebuggerCodeFinderWidgetInterfacePrivate'
debugging\qscriptdebuggercodefinderwidgetinterface_p.h:62: error: forward declaration of `struct QScriptDebuggerCodeFinderWidgetInterfacePrivate'
debugging\qscriptdebuggercodefinderwidgetinterface.cpp: In constructor `QScriptDebuggerCodeFinderWidgetInterface::QScriptDebuggerCodeFinderWidgetInterface(QScriptDebuggerCodeFinderWidgetInterfacePrivate&, QWidget*, Qt::WindowFlags)':
debugging\qscriptdebuggercodefinderwidgetinterface.cpp:63: error: no matching function for call to `QWidget::QWidget(QScriptDebuggerCodeFinderWidgetInterfacePrivate&, QWidget*&, Qt::WindowFlags&)'
../../include/QtGui/../../src/gui/kernel/qwidget.h:142: note: candidates are: QWidget::QWidget(const QWidget&)
../../include/QtGui/../../src/gui/kernel/qwidget.h:692: note: QWidget::QWidget(QWidgetPrivate&, QWidget*, Qt::WindowFlags)
../../include/QtGui/../../src/gui/kernel/qwidget.h:224: note: QWidget::QWidget(QWidget*, Qt::WindowFlags)
mingw32-make[4]: *** [tmp/obj/debug_shared/qscriptdebuggercodefinderwidgetinterface.o] Error 1
mingw32-make[4]: Leaving directory `H:/Qt/4.5.2/src/scripttools'
mingw32-make[3]: *** [debug] Error 2
mingw32-make[3]: Leaving directory `H:/Qt/4.5.2/src/scripttools'
mingw32-make[2]: *** [all] Error 2
mingw32-make[2]: Leaving directory `H:/Qt/4.5.2/src/scripttools'
mingw32-make[1]: *** [sub-scripttools-make_default-ordered] Error 2
mingw32-make[1]: Leaving directory `H:/Qt/4.5.2'
mingw32-make: *** [all] Error 2
H:\Qt\4.5.2>
Для информации, хочу напомнить, что помимо предлагаемых "раздельных" исходников под каждую платформу еще можно скачать полные исходные коды для всех платформ в одном ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz: ftp://ftp.qtsoftware.com/qt/source/
g++ -c -fexceptions -g -mthreads -w -frtti -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEFILE_SUPPORT -DQHELP_LIB -DQT_MAKEDLL -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -D_USE_MATH_DEFINES -D_BUILD_FOR_QT_ -DLUCENE_DISABLE_MEMTRACKING -D_CRT_SECURE_NO_DEPRECATE -D_MT -DQT_DLL -DQT_CORE_LIB -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include" -I"h:\Qt\4.5.2\include\QtCLucene" -I"tmp\rcc\debug_shared" -I"tmp" -I"." -I".." -I"..\..\..\..\src\3rdparty\clucene\src\CLucene" -I"..\..\..\..\src\3rdparty\clucene\src" -I"..\..\..\..\src\3rdparty\clucene\src\CLucene\analysis" -I"..\..\..\..\src\3rdparty\clucene\src\CLucene\analysis\standard" -I"..\..\..\..\src\3rdparty\clucene\src\CLucene\config" -I"..\..\..\..\src\3rdparty\clucene\src\CLucene\debug" -I"..\..\..\..\src\3rdparty\clucene\src\CLucene\document" -I"..\..\..\..\src\3rdparty\clucene\src\CLucene\index" -I"..\..\..\..\src\3rdparty\clucene\src\CLucene\queryParser" -I"..\..\..\..\src\3rdparty\clucene\src\CLucene
\search" -I"..\..\..\..\src\3rdparty\clucene\src\CLucene\store" -I"..\..\..\..\src\3rdparty\clucene\src\CLucene\util" -I"..\..\..\..\include\ActiveQt" -I"tmp\moc\debug_shared" -I"..\..\..\..\mkspecs\win32-g++" -o tmp\obj\debug_shared\StandardFilter.o ..\..\..\..\src\3rdparty\clucene\src\CLucene\analysis\standard\StandardFilter.cpp
mingw32-make[7]: *** No rule to make target `../../../../src/3rdparty/clucene/src/CLucene/analysis/standard/StandardTokenizer.cpp', needed by `tmp/obj/debug_shared/StandardTokenizer.o'. Stop.
mingw32-make[7]: Leaving directory `H:/Qt/4.5.2/tools/assistant/lib/fulltextsearch'
mingw32-make[6]: *** [debug] Error 2
mingw32-make[6]: Leaving directory `H:/Qt/4.5.2/tools/assistant/lib/fulltextsearch'
mingw32-make[5]: *** [all] Error 2
mingw32-make[5]: Leaving directory `H:/Qt/4.5.2/tools/assistant/lib/fulltextsearch'
mingw32-make[4]: *** [sub-lib-fulltextsearch-make_default-ordered] Error 2
mingw32-make[4]: Leaving directory `H:/Qt/4.5.2/tools/assistant'
mingw32-make[3]: *** [all] Error 2
mingw32-make[3]: Leaving directory `H:/Qt/4.5.2/tools/assistant'
mingw32-make[2]: *** [sub-assistant-make_default-ordered] Error 2
mingw32-make[2]: Leaving directory `H:/Qt/4.5.2/tools'
mingw32-make[1]: *** [all] Error 2
mingw32-make[1]: Leaving directory `H:/Qt/4.5.2/tools'
mingw32-make: *** [sub-tools] Error 2
H:\Qt\4.5.2>
У меня нормально собралось.
Я щас пытаюсь собрать .tar.gz'шный архив, там с именем файла все впорядке.
mingw32-make -f Makefile
mingw32-make[7]: Entering directory `H:/Qt/4.5.2/tools/designer/src/components'
cd lib\ && mingw32-make -f Makefile
mingw32-make[8]: Entering directory `H:/Qt/4.5.2/tools/designer/src/components/lib'
H:/Qt/4.5.2/bin/qmake H:/Qt/4.5.2/tools/designer/src/components/lib/lib.pro -o Makefile -spec w
WARNING: Failure to find: ..\propertyeditor\designerpropertymanager.cpp
WARNING: Failure to find: ..\signalsloteditor\signalsloteditor_tool.cpp
WARNING: Failure to find: ..\formeditor\qlayoutwidget_propertysheet.cpp
WARNING: Failure to find: ..\tabordereditor\tabordereditor_instance.cpp
WARNING: Failure to find: ..\signalsloteditor\signalsloteditor_plugin.h
WARNING: Failure to find: ..\signalsloteditor\signalsloteditor_global.h
WARNING: Failure to find: ..\propertyeditor\newdynamicpropertydialog.ui
WARNING: Failure to find: ..\propertyeditor\designerpropertymanager.cpp
WARNING: Failure to find: ..\signalsloteditor\signalsloteditor_tool.cpp
WARNING: Failure to find: ..\formeditor\qlayoutwidget_propertysheet.cpp
WARNING: Failure to find: ..\tabordereditor\tabordereditor_instance.cpp
WARNING: Failure to find: ..\signalsloteditor\signalsloteditor_plugin.h
WARNING: Failure to find: ..\signalsloteditor\signalsloteditor_global.h
WARNING: Failure to find: ..\propertyeditor\newdynamicpropertydialog.ui
RCC: Error in '..\formeditor\formeditor.qrc': Cannot find file 'images/mac/edithlayoutsplit.png'
RCC: Error in '..\formeditor\formeditor.qrc': Cannot find file 'images/mac/editvlayoutsplit.png'
RCC: Error in '..\formeditor\formeditor.qrc': Cannot find file 'images/widgets/datetimeedit.png'
RCC: Error in '..\formeditor\formeditor.qrc': Cannot find file 'images/widgets/fontcombobox.png'
...
mingw32-make -f Makefile
mingw32-make[9]: Entering directory `H:/Qt/4.5.2/tools/designer/src/components/lib'
mingw32-make -f Makefile.Debug
mingw32-make[10]: Entering directory `H:/Qt/4.5.2/tools/designer/src/components/lib'
h:\Qt\4.5.2\bin\uic.exe ..\propertyeditor\paletteeditor.ui -o ui_paletteeditor.h
h:\Qt\4.5.2\bin\uic.exe ..\propertyeditor\stringlisteditor.ui -o ui_stringlisteditor.h
h:\Qt\4.5.2\bin\uic.exe ..\propertyeditor\previewwidget.ui -o ui_previewwidget.h
mingw32-make[10]: *** No rule to make target `../propertyeditor/newdynamicpropertydialog.ui', needed by `ui_newdynamicpropertydialog.h'. Stop.
D:/work/qt-all-opensource-src-4.5.2/bin/moc.exe -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE
-DQT_LARGEFILE_SUPPORT -DBUILDING_QT__=1 -DUSE_SYSTEM_MALLOC -DNDEBUG -DQT_MAKEDLL -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -D_USE_MATH_DEFINES -DBUILD_WEBKIT -D_HAS_TR1=0
-DENABLE_OFFLINE_WEB_APPLICATIONS=1
-DENABLE_DOM_STORAGE=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_AS_IMAGE=1 -DENABLE_SVG_USE=1
-DENABLE_VIDEO=1 -DENABLE_NETSCAPE_PLUGIN_API=1 -DWTF_USE_JAVASCRIPTCORE_BINDINGS=1 -DWTF_CHANGES=1
-DBUILDING_QT__ -DSQLITE_CORE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DQT_DLL -DQT_GUI_LIB
-DQT_NETWORK_LIB -DQT_CORE_LIB @tmp\moc\debug_shared\mocinclude.tmp -D__GNUC__
-DWIN32 ../JavaScriptCore/wtf/qt/MainThreadQt.cpp -o tmp/moc/debug_shared/MainThreadQt.moc
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
mingw32-make[4]: *** [tmp/moc/debug_shared/MainThreadQt.moc] Error 1
mingw32-make[4]: Leaving directory `d:/work/qt-all-opensource-src-4.5.2/src/3rdparty/webkit/WebCore'
mingw32-make[3]: *** [debug-all] Error 2
mingw32-make[3]: Leaving directory `d:/work/qt-all-opensource-src-4.5.2/src/3rdparty/webkit/WebCore'
c:\MinGW\bin\mingw32-make.exe[2]: *** [all] Error 2
c:\MinGW\bin\mingw32-make.exe[2]: Leaving directory `d:/work/qt-all-opensource-src-4.5.2/src/3rdparty/webkit/WebCore'
c:\MinGW\bin\mingw32-make.exe[1]: *** [sub-webkit-make_default-ordered] Error 2
c:\MinGW\bin\mingw32-make.exe[1]: Leaving directory `d:/work/qt-all-opensource-src-4.5.2'
make: *** [all] Error 2
C:\msys\1.0\bin\make.exe: *** couldn't commit memory for cygwin heap, Win32 error 487
make[1]: *** [debug-all] Error 1
make[1]: Leaving directory `/d/work/qt-all-opensource-src-4.5.2/src/3rdparty/webkit/WebCore'
make: *** [sub-webkit-make_default-ordered] Error 2
как соберёт ScriptTools или обломается с ним, отпишись.
Я скачал другой архив, вот и жду, компилить с ним или нет.
make sub-src - прошёл удачно
make sub-tools - прошёл удачно
make sub-tools-qdoc3 - прошёл удачно
Обнаружил, что в демке textedit есть возможность сохранять файл в формате odt, а вот открывать нельзя.
Фонон перестал собираться. Пытается тянуть заголовки с MinGW папки, а не KDE.
---
Блин, всего-лишь сделал резервную копию old_ds9.pro, а Qt её подцепил...
Кстати по неизвестной причине я компилю WebKit уже 5 или 6 раз, после make почему-то каждый раз заново собирается.
---
Вроде собралось. Кстати забавно, вопреки моим ожиданием размер файла QtGui4.dll уменьшился на 100кб, по сравнению с версией 4.5.0.
---
Поздравляю тех, кто компилит фонон с MinGW, examples\phonon\capabilities теперь собирается и работает. Видео пашет.
Вот думаю, может попробовать пересобрать Qt на новом http://sourceforge.net/project/shownotes.php?release_id=691876 (http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=241304).
---
Попробовал... ld.exe крашнулся еще на этапе configure.
---
Обновил runtime и bintutils стало нормально.
SABROG, картинку для примера по приличней бы выбрал.
LL -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB @tmp\\moc\\debug_shared\\mocinclude.tmp -D__GNUC__ -DWIN32 ../JavaScriptCore/wtf/qt/MainThreadQt.cpp -o tmp/moc/d
...
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
make[2]: *** [tmp/moc/debug_shared/MainThreadQt.moc] Error 1
#global defaults
isEmpty(QMAKE_MOC) {
win32:QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe
else:QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
}
isEmpty(MOC_DIR):MOC_DIR = .
isEmpty(QMAKE_H_MOD_MOC):QMAKE_H_MOD_MOC = moc_
isEmpty(QMAKE_EXT_CPP_MOC):QMAKE_EXT_CPP_MOC = .moc
# 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:
# 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
}
}
# 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
Хорошо, если троли решили эту проблему, то зачем bash, собирал бы в cmd?
Собрал Qt новым MinGW. Для интереса сравнил размеры файлов, которые получились от старого и нового gcc.
Общая сумма размеров файлов на:
старом: 363Мб
новом: 514Мб
Если брать отдельные версии сборок, то релизные dll'ки в сумме составили на:
старом: 52Мб
новом: 39Мб
дебажные на:
старом: 310Мб
новом: 474Мб
Т.е. оптимизация по размеру улучшена. По скорости, к сожалению, сравнить не могу.
А время сборки как-то заметно изменилось?
При компиляции PyQt ключик -j нормально работает в mingw32-make.
Я правлю руками makefile сгенерённый при configure.
Правда при этом я убираю SH из путей - PyQt с ним не компилиться.
А вот при компиляции самой Qt ключик не работает.
Почему - не знаю.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)