Russian Qt Forum
Ноябрь 23, 2024, 16:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Кросскомпиляция (mingw) непонятные warnings при подключении QtGui  (Прочитано 7036 раз)
Solovok
Гость
« : Июнь 20, 2013, 12:04 »

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

Имею примитивный тестовый проектик:

Код:
#test.pro

QT       += core
QT       += gui

TARGET    = test
TEMPLATE = app

DESTDIR     = build
OBJECTS_DIR = tmp
MOC_DIR     = tmp

DEPENDPATH += .
SOURCES += main.cpp

Код
C++ (Qt)
// main.cpp
 
#include <QtGui>
#include <QApplication>
#include <QDebug>
 
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
 
   qDebug() << "Hello world!";
}

Qt 4.8.4 Ubuntu 12.10

Нативно под ubuntu все собирается и исполняется без проблем.
Однако когда собирается бинарник под винду кросскомпиляцией mingw вот таким скриптом
Код
Bash
#!/bin/sh
#
#
 
APPNAME=test
 
BASEDIR="./"
 
QT_WIN_INSTALL_DIR=/home/costa/qt-4.8.4-win
QT_LIN_INSTALL_DIR=/usr/local/Trolltech/Qt-4.8.4
 
export LD_LIBRARY_PATH=$QT_LIN_INSTALL_DIR/lib:$LD_LIBRARY_PATH
export PATH=$QT_LIN_INSTALL_DIR/bin:$PATH
export QT_LINUX_BIN_PATH=$QT_LIN_INSTALL_DIR/bin
export QT_WIN_INCLUDE_PATH=$QT_WIN_INSTALL_DIR/include
export QT_WIN_LIB_PATH=$QT_WIN_INSTALL_DIR/lib
 
qmake -set QT_WIN_INCLUDE_PATH $QT_WIN_INCLUDE_PATH
qmake -set QT_WIN_LIB_PATH $QT_WIN_LIB_PATH
 
qmake $APPNAME.pro -spec win32-x-g++ -r
make
 

все также собирается и работает, но напрягают вот эти странные warnings
Код:
i586-mingw32msvc-g++ -c -O2 -fexceptions -mthreads -Wall -Wextra -fno-rtti -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NO_DYNAMIC_CAST -I'../../../../qt-4.8.4-win/include/QtCore' -I'../../../../qt-4.8.4-win/include/QtGui' -I'../../../../qt-4.8.4-win/include' -I'../../../../qt-4.8.4-win/include/ActiveQt' -I'tmp' -I'/usr/local/Trolltech/Qt-4.8.4/mkspecs/win32-x-g++' -o tmp/main.o main.cpp
In file included from ../../../../qt-4.8.4-win/include/QtGui/qcolor.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/kernel/qpalette.h:46,
                 from ../../../../qt-4.8.4-win/include/QtGui/qpalette.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/kernel/qwidget.h:49,
                 from ../../../../qt-4.8.4-win/include/QtGui/qwidget.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/widgets/qabstractspinbox.h:45,
                 from ../../../../qt-4.8.4-win/include/QtGui/qabstractspinbox.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/styles/qstyleoption.h:46,
                 from ../../../../qt-4.8.4-win/include/QtGui/qstyleoption.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/itemviews/qabstractitemdelegate.h:46,
                 from ../../../../qt-4.8.4-win/include/QtGui/qabstractitemdelegate.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/QtGui:4,
                 from main.cpp:1:
../../../../qt-4.8.4-win/include/QtGui/../../src/gui/painting/qcolor.h:274: warning: ‘QDataStream& operator<<(QDataStream&, const QColor&)’ redeclared without dllimport attribute: previous dllimport ignored
../../../../qt-4.8.4-win/include/QtGui/../../src/gui/painting/qcolor.h:275: warning: ‘QDataStream& operator>>(QDataStream&, QColor&)’ redeclared without dllimport attribute: previous dllimport ignored
In file included from ../../../../qt-4.8.4-win/include/QtGui/qpainterpath.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/painting/qtransform.h:45,
                 from ../../../../qt-4.8.4-win/include/QtGui/qtransform.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/painting/qbrush.h:51,
                 from ../../../../qt-4.8.4-win/include/QtGui/qbrush.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/kernel/qpalette.h:47,
                 from ../../../../qt-4.8.4-win/include/QtGui/qpalette.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/kernel/qwidget.h:49,
                 from ../../../../qt-4.8.4-win/include/QtGui/qwidget.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/widgets/qabstractspinbox.h:45,
                 from ../../../../qt-4.8.4-win/include/QtGui/qabstractspinbox.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/styles/qstyleoption.h:46,
                 from ../../../../qt-4.8.4-win/include/QtGui/qstyleoption.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/itemviews/qabstractitemdelegate.h:46,
                 from ../../../../qt-4.8.4-win/include/QtGui/qabstractitemdelegate.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/QtGui:4,
                 from main.cpp:1:
../../../../qt-4.8.4-win/include/QtGui/../../src/gui/painting/qpainterpath.h:249: warning: ‘QDataStream& operator<<(QDataStream&, const QPainterPath&)’ redeclared without dllimport attribute: previous dllimport ignored
../../../../qt-4.8.4-win/include/QtGui/../../src/gui/painting/qpainterpath.h:250: warning: ‘QDataStream& operator>>(QDataStream&, QPainterPath&)’ redeclared without dllimport attribute: previous dllimport ignored
In file included from ../../../../qt-4.8.4-win/include/QtGui/qkeysequence.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/kernel/qwidget.h:57,
                 from ../../../../qt-4.8.4-win/include/QtGui/qwidget.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/widgets/qabstractspinbox.h:45,
                 from ../../../../qt-4.8.4-win/include/QtGui/qabstractspinbox.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/styles/qstyleoption.h:46,
                 from ../../../../qt-4.8.4-win/include/QtGui/qstyleoption.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/itemviews/qabstractitemdelegate.h:46,
                 from ../../../../qt-4.8.4-win/include/QtGui/qabstractitemdelegate.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/QtGui:4,
                 from main.cpp:1:
../../../../qt-4.8.4-win/include/QtGui/../../src/gui/kernel/qkeysequence.h:208: warning: ‘QDataStream& operator<<(QDataStream&, const QKeySequence&)’ redeclared without dllimport attribute: previous dllimport ignored
../../../../qt-4.8.4-win/include/QtGui/../../src/gui/kernel/qkeysequence.h:209: warning: ‘QDataStream& operator>>(QDataStream&, QKeySequence&)’ redeclared without dllimport attribute: previous dllimport ignored
In file included from ../../../../qt-4.8.4-win/include/QtGui/qpen.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/text/qtextformat.h:50,
                 from ../../../../qt-4.8.4-win/include/QtGui/qtextformat.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/text/qtextcursor.h:47,
                 from ../../../../qt-4.8.4-win/include/QtGui/qtextcursor.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/widgets/qlineedit.h:46,
                 from ../../../../qt-4.8.4-win/include/QtGui/qlineedit.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/QtGui:47,
                 from main.cpp:1:
../../../../qt-4.8.4-win/include/QtGui/../../src/gui/painting/qpen.h:124: warning: ‘QDataStream& operator>>(QDataStream&, QPen&)’ redeclared without dllimport attribute: previous dllimport ignored
../../../../qt-4.8.4-win/include/QtGui/../../src/gui/painting/qpen.h:125: warning: ‘QDataStream& operator<<(QDataStream&, const QPen&)’ redeclared without dllimport attribute: previous dllimport ignored
In file included from ../../../../qt-4.8.4-win/include/QtGui/qtextformat.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/text/qtextcursor.h:47,
                 from ../../../../qt-4.8.4-win/include/QtGui/qtextcursor.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/../../src/gui/widgets/qlineedit.h:46,
                 from ../../../../qt-4.8.4-win/include/QtGui/qlineedit.h:1,
                 from ../../../../qt-4.8.4-win/include/QtGui/QtGui:47,
                 from main.cpp:1:
../../../../qt-4.8.4-win/include/QtGui/../../src/gui/text/qtextformat.h:117: warning: ‘QDataStream& operator<<(QDataStream&, const QTextLength&)’ redeclared without dllimport attribute: previous dllimport ignored
../../../../qt-4.8.4-win/include/QtGui/../../src/gui/text/qtextformat.h:118: warning: ‘QDataStream& operator>>(QDataStream&, QTextLength&)’ redeclared without dllimport attribute: previous dllimport ignored
../../../../qt-4.8.4-win/include/QtGui/../../src/gui/text/qtextformat.h:363: warning: ‘QDataStream& operator<<(QDataStream&, const QTextFormat&)’ redeclared without dllimport attribute: previous dllimport ignored
../../../../qt-4.8.4-win/include/QtGui/../../src/gui/text/qtextformat.h:364: warning: ‘QDataStream& operator>>(QDataStream&, QTextFormat&)’ redeclared without dllimport attribute: previous dllimport ignored
i586-mingw32msvc-g++ -Wl,-s -mthreads -Wl,-subsystem,windows -o build/test.exe tmp/main.o  -L'/home/costa/qt-4.8.4-win/lib' -lmingw32 -lqtmain -lQtGui4 -lQtCore4

Если из main.cpp убрать #include <QtGui>, то warnings исчезают. Но откуда они берутся, никак не могу понять. Пробовал гуглить, но ничего толкового не обнаружил.
В реальном большом проекте этих warnings очень много и они сильно мешают контролировать появление настоящих warnings.

Прошу помощи, как подавить эти предупреждения.
Записан
Solovok
Гость
« Ответ #1 : Июнь 25, 2013, 13:21 »

Может кто-нибудь подскажет, хоть в какую сторону копать?
Записан
Majestio
Гость
« Ответ #2 : Июнь 25, 2013, 15:23 »

А если сделать полный пример с формой/диалогом?
Записан
Solovok
Гость
« Ответ #3 : Июнь 25, 2013, 15:47 »

То же самое, поэтому я и сделал максимально упрощенный пример. Как только подключаю #include <QtGui> так и начинается эта байда.
Записан
Majestio
Гость
« Ответ #4 : Июнь 25, 2013, 16:22 »

Мож это как-то поможет.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Июнь 25, 2013, 16:41 »

вообще писать #include <QtGui> — не лучшая практика. если подключаешь только нужные классы, все равно сыпятся предупреждения?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Majestio
Гость
« Ответ #6 : Июнь 25, 2013, 16:57 »

вообще писать #include <QtGui> — не лучшая практика.

Вопрос спорный. Линкер же все равно только нужное оставит?
Записан
Solovok
Гость
« Ответ #7 : Июнь 25, 2013, 18:38 »

вообще писать #include <QtGui> — не лучшая практика. если подключаешь только нужные классы, все равно сыпятся предупреждения?

Все равно сыпятся. Все что так или иначе GUI, вызывает предупреждения, даже самый простой QMessageBox.
Записан
Solovok
Гость
« Ответ #8 : Июнь 25, 2013, 18:56 »

Мож это как-то поможет.

Гугл тоже меня водил вокруг этих declspec, но как их применить к моей проблеме, ума не приложу.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #9 : Июнь 26, 2013, 05:20 »

вообще писать #include <QtGui> — не лучшая практика.

Вопрос спорный. Линкер же все равно только нужное оставит?

И вправду, интересный вопрос Улыбающийся
Кто знает, линкер оставит нужные библиотеки или все будет линковать?  Улыбающийся
Записан

Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #10 : Июнь 26, 2013, 05:51 »

И вправду, интересный вопрос Улыбающийся
Кто знает, линкер оставит нужные библиотеки или все будет линковать?  Улыбающийся
Линкер оставит нужные, но компилятор будет молотить все хедеры, что скажется на времени компиляции.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.078 секунд. Запросов: 23.