Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: ANM от Апрель 22, 2005, 13:14



Название: Проблема с компиляцией qt 3.3.4 (Intel C++ 8.1)
Отправлено: ANM от Апрель 22, 2005, 13:14
Возникла проблема при инсталляции и сборке Qt v3.3.4 компилятором Intel C++ v8.1.
Предыдущую версию Qt v3.3.2 собирал без проблем. :(
Цитировать
icl /c /Foqunicodetables.obj  /W3 /nologo /O1  /I. /Igenerators /Igenerators\unix
/Igenerators\win32 /Igenerators\mac /I..\include /I..\src\tools  /I..\mkspecs\win32

Цитировать

msvc  /DQT_NO_TEXTCODEC /DQT_NO_UNICODETABLES /DQT_LITE_COMPONENT
/DQT_NODLL /DQT_NO_STL  /DQT_NO_COMPRESS /DUNICODE /DHAVE_QCONFIG_CPP
..\src\tools\qunicodetables.cpp qunicodetables.cpp

Цитировать

    link /DEBUG /OUT:qmake.exe project.obj main.obj makefile.obj
unixmake.obj unixmake2.obj borland_bmake.obj mingw_make.obj  msvc_nmake.obj msvc_dsp.obj msvc_vcproj.obj option.obj
winmakefile.obj projectgenerator.obj  metrowerks_xml.obj
pbuilder_pbx.obj msvc_objectmodel.obj property.obj meta.obj qtmd5.obj
qstring.obj qlocale.obj quuid.obj qtextstream.obj qiodevice.obj qglobal.obj qgdict.obj qcstring.obj qdatastream.obj  qgarray.obj
qbuffer.obj qglist.obj qptrcollection.obj qfile.obj qfile_win.obj qregexp.obj
qgvector.obj  qgcache.obj qbitarray.obj qdir.obj qfileinfo_win.obj
qdir_win.obj qfileinfo.obj qdatetime.obj  qstringlist.obj qmap.obj
qlibrary.obj qlibrary_win.obj qconfig.obj qsettings.obj qsettings_win.obj
qunicodetables.obj ole32.lib advapi32.lib

Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
LINK : fatal error LNK1104: cannot open file "libm.lib"
Building qmake failed, return code 2
NMAKE : fatal error U1077: 'link' : return code '0x450'
Stop.
The configure process failed.

Меня настораживают две вещи:
1. используется линкер от VC6 link вместо интеловского xilink, хотя при компиляции объектников используется интеловский компилятор icl.
2. Зачем то линкеру подсовывается библиотека libm.lib. Такой библиотеки нет вообще. Может она вылезла из make для linux: хотели libm.a подсунуть и получили libm.lib.

Что посоветуете?

Конфигурация
Цитировать

QMAKESPEC...................win32-icc
Maketool....................nmake
Environment:
    INCLUDE=
      C:\Program Files\MSVS\VC98\INCLUDE\stlport
      C:\Program Files\boost\1.29.0
      C:\Program Files\Microsoft SDK\Include\.
      C:\Program Files\MSVS\VC98\atl\include
      C:\Program Files\MSVS\VC98\mfc\include
      C:\Program Files\MSVS\VC98\include
      C:\Program Files\ObjectiveStudio\Include\Foundation\Compatibility\Common
      C:\Program Files\ObjectiveStudio\Include\Foundation\Compatibility\MVC
      C:\Program Files\ObjectiveStudio\Include
      C:\Program Files\Rogue Wave\Stingray Studio\Include
      C:\Program Files\Rogue Wave\Stingray Studio\Regex\Include
    LIB=
      C:\Program Files\Microsoft SDK\Lib\.
      C:\Program Files\MSVS\VC98\mfc\lib
      C:\Program Files\MSVS\VC98\lib
      C:\Program Files\Rogue Wave\Stingray Studio\Lib
      C:\Program Files\Rogue Wave\Stingray Studio\Regex\Lib\VC6
    PATH=
      C:\Qt\3.3.4\bin
      C:\WINDOWS\SYSTEM32
      C:\WINDOWS
      C:\WINDOWS\SYSTEM32\WBEM
\BIN
      C:\PROGRAM FILES\MICROSOFT SDK\BIN\.
      C:\PROGRAM FILES\MICROSOFT SDK\BIN\WINNT\.
      C:\PROGRA~1\TCL\BIN
      C:\PROGRAM FILES\SUPPORT TOOLS\
      C:\CYGWIN\BIN
      C:\PROGRAM FILES\MSVS\COMMON\TOOLS\WINNT
      C:\PROGRAM FILES\MSVS\COMMON\MSDEV98\BIN
      C:\PROGRAM FILES\MSVS\COMMON\TOOLS
      C:\PROGRAM FILES\MSVS\VC98\BIN
      C:\PROGRAM FILES\COMMON
      C:\PROGRAM FILES\ROGUE WAVE\STINGRAY STUDIO\BIN
      C:\PROGRAM FILES\ROGUE WAVE\STINGRAY STUDIO\LIB
      C:\PROGRAM FILES\ROGUE WAVE\STINGRAY STUDIO\REGEX\LIB\VC6
      C:\Program Files\Intel\CPP\Compiler80\Ia32\Bin
      C:\Program Files\Intel\CPP\IDB80\Bin

Цитировать

Debug symbols...............yes
Thread support..............yes
Accessibility support.......yes
Big Textcodecs..............yes
Tablet support..............no
STL support.................yes
Additional exports..........no
Exception support...........yes
RTTI support................yes
OpenGL support..............yes
Image formats:
    GIF support.............yes
    MNG support.............plugin
    JPEG support............qt
    PNG support.............qt
Styles:
    Windows.................yes
    Windows XP..............yes
    Motif...................plugin
    Platinum................plugin
    MotifPlus...............plugin
    CDE.....................plugin
    SGI.....................plugin
Sql Drivers:
    ODBC....................no
    MySQL...................no
    OCI.....................no
    PostgreSQL..............no
    TDS.....................no
    DB2.....................no
    SQLite..................no
    Interbase...............no


Название: Проблема с компиляцией qt 3.3.4 (Intel C++ 8.1)
Отправлено: ANM от Апрель 26, 2005, 17:49
Проблема была в системной переменной среды окружения LIB  :o
Инсталлятор Qt почему то не видел системной переменной среды окружения LIB в которой была прописана ссылка на %INTEL_COMPILER80%\Ia32\Lib. Как только я перенес эту ссылку из системной переменной среды окружения в пользовательскую, все заработало...
Правда при компиляции была куча предупреждений вида:
Код:
kernel\qpixmap_win.cpp(984): warning #1572: floating-point equality and inequality comparisons are unreliable
      if ( mat.m11() == 1.0F && mat.m22() == 1.0F )

и
Код:

C:\Qt\3.3.4\include\qsqlindex.h(77): warning #1125: function "QSqlRecord::toString(const QString &, const QString &) const" is hidden by "QSqlIndex::toString" -- virtual function override intended?
      QString          toString( const QString& prefix = QString::null

ерунда конечно, но неприятно.
А вообще популярна такая связка? Qt + Intel C++


Название: Проблема с компиляцией qt 3.3.4 (Intel C++ 8.1)
Отправлено: Admin от Апрель 26, 2005, 20:01
Код:

kernel\qpixmap_win.cpp(984): warning #1572: floating-point equality and inequality comparisons are unreliable
      if ( mat.m11() == 1.0F && mat.m22() == 1.0F )

Нельзя сравнивать напрямую float числа. Можно делать так
EPS=0.001
if(fabs(a-b)<EPS){
  a примерно равно b
}

Цитировать
Qt + Intel C++

Такая связка, на мой взгляд совсем не популярна. Компилер этот не все ставят. А ускорять GUI смысла не вижу. Вот математику - это да.


Название: Проблема с компиляцией qt 3.3.4 (Intel C++ 8.1)
Отправлено: ANM от Апрель 27, 2005, 10:52
Цитировать
Нельзя сравнивать напрямую float числа. Можно делать так
EPS=0.001
if(fabs(a-b)<EPS){
a примерно равно b
}

Я знаю. Но это не у меня float числа напрямую сравниваются а в библиотеке Qt  :wink:.
Например:
src/canvas/qcanvas.cpp строки 1088, 2024.
src/kernel/qpainter_win.cpp строки 1199, 1200, 1201
src/kernel/qwidget_win.cpp строка 1784
ну и т.д.
Цитировать
Такая связка, на мой взгляд совсем не популярна. Компилер этот не все ставят. А ускорять GUI смысла не вижу. Вот математику - это да.

А в моем приложении есть математика. Но это не главное. Intel C++ использует C++ frontend от  Edison Design Group (http://www.edg.com/cpp.html) а это вроде самый стандартный C++  :)
В настроящий момент я работаю в VC6 MFC+Stingray Studio. А Qt я пока изучаю, вот и пробую различные варианты.


Название: Проблема с компиляцией qt 3.3.4 (Intel C++ 8.1)
Отправлено: Admin от Апрель 27, 2005, 11:31
насчет первого - это QTшники не позаботились

насчет приложения с математикой
обычно делается так
GUI и матчасть - это 2 разных проекта
матчасть обычно либа или DLL

PS: А если все работает то можно и забить :)