Сборка для Windows под Linux с использованием Qt Creator - PullRequest
1 голос
/ 06 июля 2011

Мне нужно скомпилировать приложение Qt для Windows, пока я использую Fedora 14, в которой есть бинарные пакеты для Qt Creator MinGW.Я правильно установил все необходимые пакеты для кросс-компиляции и добавил путь для qmake как /usr/bin/mingw32-qmake-qt4.Qt Creator не может получить достаточно переменных окружения для установки необходимого набора инструментов.

После небольшого копания я обнаружил, что Qt Creator вызывает указанный путь qmake с параметром -query, чтобы получить эти переменные.

Я обнаружил, что вызов /usr/bin/mingw32-qmake-qt4 -query напрямую выдает ошибку ***Unknown option -query.Поэтому я предполагаю, что Qt Creator невиновен.

Затем я обнаружил, что /usr/bin/mingw32-qmake-qt4 - это не более чем символическая ссылка на общий сценарий /usr/libexec/mingw32-scripts, который использует basename $0, rpm --eval, бла-бла-бла.

Теперь я устал.Может ли кто-нибудь позаботиться об этом раньше?

Это версии моих установленных пакетов (они являются последними на 2011/07/06):

mingw32-binutils.i686                2.20.1-2.fc14               @updates       
mingw32-cpp.i686                     4.5.0-1.fc14                @fedora        
mingw32-dbus.noarch                  1.4.1-0.1.20101008git.fc14  @updates       
mingw32-expat.noarch                 2.0.1-6.fc13                @fedora        
mingw32-filesystem.noarch            64-2.fc14                   @updates       
mingw32-gcc.i686                     4.5.0-1.fc14                @fedora        
mingw32-gcc-c++.i686                 4.5.0-1.fc14                @fedora        
mingw32-libjpeg.noarch               7-2.fc12                    @fedora        
mingw32-libpng.noarch                1.4.3-1.fc14                @fedora        
mingw32-libtiff.noarch               3.9.5-1.fc14                @updates       
mingw32-pthreads.noarch              2.8.0-10.fc13               @fedora        
mingw32-qt.noarch                    4.7.1-3.fc14                @updates       
mingw32-qt-qmake.i686                4.7.1-2.fc14                @updates       
mingw32-runtime.noarch               3.15.2-5.fc13               @fedora        
mingw32-sqlite.noarch                3.6.22-1.fc13               @fedora        
mingw32-w32api.noarch                3.14-1.fc14                 @fedora        
mingw32-zlib.noarch                  1.2.5-1.fc14                @fedora        
qt.i686                              1:4.7.2-8.fc14              @updates       
qt-assistant.i686                    1:4.7.2-8.fc14              @updates       
qt-creator.i686                      2.1.0-4.rc1.fc14            @updates       
qt-demos.i686                        1:4.7.2-8.fc14              @updates       
qt-devel.i686                        1:4.7.2-8.fc14              @updates       
qt-examples.i686                     1:4.7.2-8.fc14              @updates       
qt-mysql.i686                        1:4.7.2-8.fc14              @updates       
qt-webkit.i686                       1:4.7.2-8.fc14              @updates       
qt-x11.i686                          1:4.7.2-8.fc14              @updates 

Я забыл сказать, чтоЯ предпочитаю использовать бинарные пакеты, предоставляемые репозиториями Fedora, вместо локально собранных библиотек или инструментов

1 Ответ

1 голос
/ 15 июля 2011

Я быстро взглянул на то, что происходит на моей установке Fedora 15.

mingw32-qmake-qt4 - это мелкая оболочка, которая в основном просто вызывает qmake -spec win32-g++-cross $0. Теперь, если вы позвоните mingw32-qmake-qt4 -query, опции -spec и -query будут переданы qmake. Qmake, однако, достаточно глуп, чтобы НЕ принимать эти две опции вместе, и выдает сообщение об ошибке.

Я полагаю, что это можно исправить, заменив скрипт-обертку mingw32-qmake подходящим исполняемым файлом, в котором жестко задан параметр -spec. Таким образом, станет ненужным использовать опцию -spec, и вы получите работающую опцию -query.

Возможно, вы захотите написать в Fedora MinGW список рассылки , возможно, у кого-то там есть лучшая идея, как решить эту проблему.

...