После прочтения этой статьи http://lukast.mediablog.sk/log/?p=155 Я решил использовать mingw on linux для компиляции оконных приложений. Это означает, что я могу компилировать, тестировать, отлаживать и выпускать непосредственно из Linux.Перекрестное компиляция из MinGW на Fedora 12 в Windows - окно консоли?
Я взломал этот скрипт сборки, который перекроет компиляцию приложения и даже упакует его в ZIP-файл. Обратите внимание, что я использую исходные сборки для QMake (вы даже знали, что это поддерживается? Wow ...). Также обратите внимание, что сценарий автоматически вытащит необходимые библиотеки DLL. Вот сценарий для вас всех интернетов для использования и злоупотребления:
#! /bin/sh
set -x
set -e
VERSION=0.1
PRO_FILE=blabla.pro
BUILD_DIR=mingw_build
DIST_DIR=blabla-$VERSION-win32
# clean up old shite
rm -fr $BUILD_DIR
mkdir $BUILD_DIR
cd $BUILD_DIR
# start building
QMAKESPEC=fedora-win32-cross qmake-qt4 QT_LIBINFIX=4 config=\"release\ quiet\" ../$PRO_FILE
#qmake-qt4 -spec fedora-win32-cross
make
DLLS=`i686-pc-mingw32-objdump -p release/*.exe | grep dll | awk '{print $3}'`
for i in $DLLS mingwm10.dll ; do
f=/usr/i686-pc-mingw32/sys-root/mingw/bin/$i
if [ ! -f $f ]; then continue; fi
cp -av $f release
done
mkdir -p $DIST_DIR
mv release/*.exe $DIST_DIR
mv release/*.dll $DIST_DIR
zip -r ../$DIST_DIR.zip $DIST_DIR
скомпилированных бинарных работы на машине Windows7 я тестировал. Теперь на вопросы:
- Когда я запускаю приложение в Windows, тема не является темой Windows7. Я предполагаю, что у меня отсутствует модуль стиля, я еще не уверен.
- Приложение по какой-либо причине получает окно консоли.
Второй момент (окно консоли) имеет решающее значение. Как удалить это фоновое окно? Обратите внимание, что дополнительные строки конфигурации не работают для меня, что мне там не хватает?
Edit 1 (планирование несколько):
Компиляция линия:
i686-pc-mingw32-g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -o release/font_export.exe object_script.font_export.Release -L"/usr/i686-pc-mingw32/sys-root/mingw/lib" -lQtGui4 -lQtCore4
Переключатель -subsystem,windows
добавляется только тогда, когда "CONFIG + = окна", и это не учитывается в других операционных системах. Я предполагаю, что порт QG MinGW запутывается «Я работаю в Linux, мне нужно игнорировать конфигурацию окон/консоли». Это означает, что мне нужно отредактировать соответствующий файл qmake.spec. arhg ... Я ненавижу ошибки. Мне все еще нужно проверить, что это устраняет проблему.