Après avoir lu cet article http://lukast.mediablog.sk/log/?p=155 j'ai décidé d'utiliser mingw sous Linux pour compiler des applications Windows. Cela signifie que je peux compiler, tester, déboguer et publier directement à partir de Linux.Croix de compilation de MinGW sur Fedora 12 à Windows - fenêtre de la console?
J'ai piraté ce script de construction qui va compiler l'application et même l'empaqueter dans un fichier ZIP. Notez que j'utilise des builds de source pour QMake (saviez-vous que c'est supporté? Wow ...). Notez également que le script tirera automatiquement les DLL nécessaires. Voici le script pour vous tous internets à utiliser et d'abus:
#! /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
Les travaux binaires compilés sur la machine Windows7 je l'ai testé. Maintenant pour les questions:
- Lorsque j'exécute l'application sur Windows, le thème n'est pas le thème Windows7. Je suppose qu'il me manque un module de style, je ne suis pas encore vraiment sûr.
- L'application obtient une fenêtre de console pour une raison quelconque.
Le deuxième point (la fenêtre de la console) est critique. Comment puis-je supprimer cette fenêtre d'arrière-plan? S'il vous plaît noter que les lignes de configuration supplémentaires ne fonctionnent pas pour moi, qu'est-ce que je manque là?
Edit 1 (planification quelques-uns):
La ligne de compilation est:
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
Le commutateur -subsystem,windows
est ajouté que lorsque "CONFIG + = fenêtres" et cela est ignoré dans d'autres systèmes d'exploitation. Ma conjecture est que le port de Qt MinGW est confus "Je cours sous Linux, j'ai besoin d'ignorer la configuration de Windows/console". Cela signifie que j'ai besoin d'éditer le fichier qmake.spec correspondant. arhg ... Je déteste les insectes. J'ai encore besoin de vérifier que cela résout le problème ....