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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Static Qt двух версий (MinGW и VC8)  (Прочитано 5790 раз)
Grinchman
Гость
« : Апрель 08, 2009, 07:56 »

Хочется иметь возможность собирать проект разными компиляторами, в частности MinGW-g++ и MSVC8.
Если я правильно понимаю, то для этого с начала мне требуется собрать две разные версии Qt в разных директориях с помощью этих двух компиляторов соответственно?
И далее собирать свой проект подлинковывая либы и хёдеры из нужной директории Qt? Каким образом это разруливается например для qmake`а в .pro файлах?
P.S.: В моё случае требуется тоже самое сделать, но в CMake.
Записан
spirit
Гость
« Ответ #1 : Апрель 08, 2009, 08:23 »

переменные окружения не нужно жестко забивать.
у меня есть два батника, вот примеры
батник для minGW
Цитировать
@SET QTDIR=D:\develop\Qt\2009.01\qt
@SET QMAKESPEC=win32-g++

@SET MINGWDIR=D:\develop\Qt\2009.01\mingw

@SET PATH=%QTDIR%\bin;%MINGWDIR%\bin;
@SET INCLUDE=%QTDIR%\include;%MINGWDIR%\include;
@SET LIB=%QTDIR%\lib;%MINGWDIR%\lib;
батник для VS2008
Цитировать
@SET QTDIR=D:\develop\qt-4.5.0-vs2008
@SET QMAKESPEC=win32-msvc2008

CALL "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"

@SET PATH=%QTDIR%\bin;
@SET INCLUDE=%QTDIR%\include;
@SET LIB=%QTDIR%\lib;
в зависимости от компиля и вызываю эти батники.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Апрель 08, 2009, 08:48 »

>>Каким образом это разруливается например для qmake`а в .pro файлах?
для него как раз ни каким, в нём самом зашит путь к каталогу где его собрали. И при генерации make-файлов он свои внутренние пути и подставляет.

А способ, которым пользуется spirit, работает очень просто: в зависимости от текущего окружения (@SET PATH=%QTDIR%\bin;) при вызове qmake вызывается тот котрый виден через переменную PATH, ну а qmake знает свои пути.
Записан

Юра.
spirit
Гость
« Ответ #3 : Апрель 08, 2009, 08:54 »

А способ, которым пользуется spirit, работает очень просто: в зависимости от текущего окружения (@SET PATH=%QTDIR%\bin;) при вызове qmake вызывается тот котрый виден через переменную PATH, ну а qmake знает свои пути.
ага, именно так  Улыбающийся
Записан
Grinchman
Гость
« Ответ #4 : Апрель 08, 2009, 09:51 »

Спасибо!
Опробую как только смогу собрать Qt под MinGW, а с этим как раз возникли проблемы.
Устновил MinGW, прописал в PATH путь до /bin директории.
Qt конфигурю следующим способом:
1) в файле mkspecs/win32-g++/qmake.conf добавляю к переменной QMAKE_LFLAGS ключик -static (Qt нужна статическая)
2) запускаю конфигуратор: configure -static -release -xplatform win32-g++
3) запускаю mingw32-make, выдается следующие ошибки:
Код:
In file included from ../../include/QtCore/qatomic_windows.h:1,
                 from ../../include/QtCore/../../src/corelib/arch/qatomic_arch.h:72,
                 from ../../include/QtCore/qatomic_arch.h:1,
                 from ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h:203,
                 from ../../include/QtCore/qbasicatomic.h:1,
                 from ../../include/QtCore/../../src/corelib/thread/qatomic.h:42,
                 from ../../include/QtCore/qatomic.h:1,
                 from ../../include/QtCore/../../src/corelib/tools/qbytearray.h:42,
                 from ../../include/QtCore/qbytearray.h:1,
                 from qtmain_win.cpp:39:
../../include/QtCore/../../src/corelib/arch/qatomic_windows.h:387: error: declaration of C function `long int Interlocke
dCompareExchange(long int*, long int, long int)' conflicts with
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1663: error: previous declaration `LONG InterlockedC
ompareExchange(volatile LONG*, LONG, LONG)' here
../../include/QtCore/../../src/corelib/arch/qatomic_windows.h:388: error: declaration of C function `long int Interlocke
dIncrement(long int*)' conflicts with
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1676: error: previous declaration `LONG InterlockedI
ncrement(volatile LONG*)' here
../../include/QtCore/../../src/corelib/arch/qatomic_windows.h:389: error: declaration of C function `long int Interlocke
dDecrement(long int*)' conflicts with
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1667: error: previous declaration `LONG InterlockedD
ecrement(volatile LONG*)' here
../../include/QtCore/../../src/corelib/arch/qatomic_windows.h:390: error: declaration of C function `long int Interlocke
dExchange(long int*, long int)' conflicts with
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1668: error: previous declaration `LONG InterlockedE
xchange(volatile LONG*, LONG)' here
../../include/QtCore/../../src/corelib/arch/qatomic_windows.h:391: error: declaration of C function `long int Interlocke
dExchangeAdd(long int*, long int)' conflicts with
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1672: error: previous declaration `LONG InterlockedE
xchangeAdd(volatile LONG*, LONG)' here
Записан
spirit
Гость
« Ответ #5 : Апрель 08, 2009, 10:03 »

ты юзаешь этот мануал?
Записан
Grinchman
Гость
« Ответ #6 : Апрель 08, 2009, 10:09 »

Да, именно его. Qt версии 4.4.3, MinGW-gcc\g++ версия 3.4.5-20060117-3
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #7 : Апрель 08, 2009, 10:15 »

Цитировать
2) запускаю конфигуратор: configure -static -release -xplatform win32-g++

xplatform?

Цитировать
-xplatform <spec> .. The operating system and compiler you are cross compiling to.

Пробуй:

configure -static -release -platform win32-g++
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Апрель 08, 2009, 10:38 »

2 Grinchman, ты лучше батник состряпай как у spirit'а, а в конце допиши:
cmd.exe

Пути к еще несобраным Qt'ям укажи.
И в открывшейся командной строке напиши configure без указания платформы (т.к. в батнике уже указана)
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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