После прочтения этой статьи http://lukast.mediablog.sk/log/?p=155 я решил использовать mingw на linux для компиляции приложений Windows. Это означает, что я могу компилировать, тестировать, отлаживать и выпускать прямо из Linux.
Я взломал этот скрипт сборки, который будет кросс-компилировать приложение и даже упаковывать его в ZIP-файл. Обратите внимание, что я использую сборки из исходного кода для QMake (вы даже знали, что это поддерживается? Вау ...). Также обратите внимание, что скрипт будет извлекать необходимые библиотеки 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. Я предполагаю, что мне не хватает стилевого модуля, я еще не совсем уверен.
- Приложение по какой-то причине получает окно консоли.
Второй пункт (окно консоли) является критическим. Как я могу удалить это фоновое окно? Обратите внимание, что дополнительные строки конфигурации у меня не работают, что мне там не хватает?
Редактировать 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 + = windows» и игнорируется в других ОС. Я предполагаю, что порт Mint GW в Qt запутывается: «Я работаю в Linux, мне нужно игнорировать конфигурацию windows / console». Это означает, что мне нужно отредактировать соответствующий файл qmake.spec. арх ... я ненавижу жуков Мне все еще нужно убедиться, что это решает проблему ....