Cette page regroupe quelques astuces pour le développement de QET sous Windows.
Pour pouvoir lancer make debug sous Windows, il faut diposer de Qt en version debug ; pour cela, se rendre dans Démarrer > Programmes > Qt 4.4.0 > Qt 4.4.0 (Build Debug Libraries).
console à la ligne CONFIG +=g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-subsystem,console -mthrea ds -Wl -o release\qelectrotech.exe object_script.qelectrotech.Release -L"c:\Qt\4.4.0\lib" release\qelectrotech_res.o -l QtSvg4 -lQtXml4 -lQtGui4 -lQtNetwork4 -lQtCore4 /mingw/lib/libmingw32.a(main.o)(.text+0x106):main.c: undefined reference to `WinMain@16' collect2: ld returned 1 exit status mingw32-make[1]: *** [release\qelectrotech.exe] Error 1 mingw32-make[1]: Leaving directory `C:/cpp/qet-0.2' mingw32-make: *** [release] Error 2
Supprimez le fichier main.o dans le répertoire release\ ou debug\.
Exemple ici avec le trunk.
Pré-requis : MingW (pour mingw32-make.exe), Subversion (pour svn.exe), utilitaires Qt (pour qmake.exe et bien d'autres), le tout accessible dans le PATH. À cela s'ajoute Cygwin (pour bash.exe), et 7-Zip (pour 7z.exe) sans contrainte particulière au niveau du PATH.
Exemple de PATH utilisable :
C:\putty;C:\MinGW\bin;C:\Qt\4.5.3\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Subversion\;C:\Program Files\TortoiseSVN\bin;
Lancer une invite de commande : Windows+R ⇒ cmd Se rendre dans un répertoire qui sera dédié au packaging ; veiller à ce qu'il n'y ait pas d'espace dans le chemin de ce dossier ; exemple :
cd /d D:\qet_packaging\
Y créer un répertoire bin :
mkdir bin
Faire un check out du répertoire trunk du dépôt Subversion :
svn checkout svn://svn.tuxfamily.org/svnroot/qet/qet/trunk qelectrotech_trunk
Ou pour ne pas charger le .svn du dépôt Subversion.
svn export svn://svn.tuxfamily.org/svnroot/qet/qet/trunk qelectrotech_trunk
On lance la compilation
qmake mingw32-make -f Makefile.Release
ou avec un processeur tres puissant (8 cores)
mingw32-make -j9 -f Makefile.Release
copier le binaire qelectrotech.exe du répertoire release dans le répertoire bin
Ajouter les dll dans le répertoire bin:
on ajoute les dll de MinGW C:\MinGW\bin
mingwm10.dll
on ajoute les dll de Qt C:\Qt\4.8.5\bin
QtCore4.dll QtGui4.dll QtNetwork4.dll QtSql4.dll QtSvg4.dll QtXml4.dll libgcc_s_dw2-1.dll libstdc++-6.dll
on ajoute un répertoire imageformats avec dedans
C:\Qt\4.8.5\plugins\imageformats
qjpeg4.dll
on ajoute un répertoire sqldrivers avec dedans la dll
C:\Qt\4.8.5\plugins\sqldrivers
qsqlite4.dll
*Le répertoire éléments n'étant pas reprensenté pour des question de taille évidente.
qelectrotech-0.3b-x86-win32-readytouse$ tree
.
├── bin
│ ├── imageformats
│ │ └── qjpeg4.dll
│ ├── libgcc_s_dw2-1.dll
│ ├── mingwm10.dll
│ ├── qelectrotech.exe
│ ├── QtCore4.dll
│ ├── QtGui4.dll
│ ├── QtNetwork4.dll
│ ├── QtSql4.dll
│ ├── QtSvg4.dll
│ ├── QtXml4.dll
│ └── sqldrivers
│ └── qsqlite4.dll
├── ChangeLog
├── conf
│ ├── elements
│ ├── qelectrotech.conf
│ └── titleblocks
├── CREDIT
├── elements
│ ├── appareils_de_mesure
│ ├── automatisme
│ ├── blocs_de_securite
│ ├── bornes
│ ├── capteurs
│ ├── contacts
│ ├── convertisseurs
│ ├── demarreurs_progressifs
│ ├── domestiques
│ ├── energie
│ ├── fiches
│ ├── haute_tension
│ ├── mecanique
│ │ ├── hydraulique
│ │ └── pneumatique
│ ├── nomenclatures
│ ├── process
│ ├── protections
│ ├── recepteurs
│ ├── references
│ ├── semiconducteurs
│ ├── sources
│ ├── variateurs_de_frequence
│ └── vignettes
├── ELEMENTS.LICENSE
├── examples
│ ├── 741.qet
│ ├── ArduinoLCD.qet
│ ├── convertisseur.qet
│ ├── Convoyeur_bouteilles.qet
│ ├── domestique.qet
│ ├── double_sens.qet
│ ├── grafcet.qet
│ ├── Habitat-Schemas_developpes.qet
│ ├── lmdg.qet
│ ├── m_000.qet
│ └── tremie_vibrante.qet
├── ico
│ ├── application-x-qet-element.ico
│ ├── application-x-qet-project.ico
│ ├── application-x-qet-titleblock.ico
│ └── qelectrotech.ico
├── Lancer QET.bat
├── lang
│ ├── qet_ar.qm
│ ├── qet_ca.qm
│ ├── qet_cs.qm
│ ├── qet_de.qm
│ ├── qet_el.qm
│ ├── qet_en.qm
│ ├── qet_es.qm
│ ├── qet_fr.qm
│ ├── qet_hr.qm
│ ├── qet_it.qm
│ ├── qet_pl.qm
│ ├── qet_pt.qm
│ ├── qet_ro.qm
│ ├── qet_ru.qm
│ ├── qt_ar.qm
│ ├── qt_cs.qm
│ ├── qt_de.qm
│ ├── qt_es.qm
│ ├── qt_fr.qm
│ ├── qt_it.qm
│ ├── qt_pl.qm
│ └── qt_pt.qm
├── LICENSE
├── qet_uninstall_file_associations.reg
├── README
├── register_filetypes.bat
└── titleblocks
├── A4_1.titleblock
├── default.titleblock
├── DIN_A4.titleblock
├── double-logo.titleblock
└── single-logo.titleblock
test.qet - celui-ci sera ouvert par le script de test s'il est appelé sans argument0-compil.bat, 1-test.bat, 2-package.bat et package.sh0-compil.bat :
@echo off rem Dossier de travail set working_directory=%~dp0 cd /d %working_directory% rem Mise a jour du depot SVN svn up rem compilation qmake mingw32-make -f Makefile.Release rem copie du fichier si la compilation a reussi if %errorlevel%==0 ( copy /Y release\qelectrotech.exe bin\ echo La compilation a reussi. ) else ( echo La compilation a echoue. )
1-test.bat :
@echo off rem Dossier de travail set working_directory=%~dp0 cd /d %working_directory% rem choisit des schemas a ouvrir if "%1" == "" ( rem schema a ouvrir par defaut pour le test set args=test.qet ) else ( set args=%* ) rem set args=%* rem lance QElectroTech @start bin\qelectrotech.exe --common-elements-dir=elements/ -style plastique %args%
svn_donwload_tag.sh
#!/bin/bash # trouve la derniere revision de svn://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3 if [ -z "$HEAD" ] ; then #HEAD=$(svn --xml info svn://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3 | grep revision=\" | tail -1 | cut -d\" -f2) #branche 0.3 HEAD=$(svn --xml info svn://svn.tuxfamily.org/svnroot/qet/qet/trunk | grep revision=\" | tail -1 | cut -d\" -f2) #trunk #HEAD=$(svn --xml info svn://svn.tuxfamily.org/svnroot/qet/qet/tags/0.3a | grep revision=\" | tail -1 | cut -d\" -f2) #tagg 0.3 alpha echo -e "\033[1;34mdownload source qelectrotech-0.30.r$HEAD.\033[m" fi #variables repertoires de travail #DEFAULT_DIR="/home/laurent" #TEMP_DIR="/home/laurent" #svn export #cd $TEMP_DIR svn export svn://svn.tuxfamily.org/svnroot/qet/qet/trunk qelectrotech_trunk/ #tag de la version cd qelectrotech_trunk/sources sed -i "s/const QString displayedVersion = \"0.4-dev\"/const QString displayedVersion = \"0.4-dev+svn$HEAD\"/" qet.h exit
rem Dossier de travail set working_directory=%~dp0 cd /d %working_directory%\packaging_windows\files\bin del /s *.exe cd .. rd elements /S /Q rd examples /S /Q rd lang /S /Q rd titleblocks /S /Q MD elements examples lang titleblocks cd /d %working_directory%\qelectrotech-0.3+svn-x86-win32-readytouse\bin del /s *.exe cd .. rd elements /S /Q rd examples /S /Q rd lang /S /Q rd titleblocks /S /Q MD elements examples lang titleblocks cd /d %working_directory% rd qelectrotech_trunk /S /Q move c:\cygwin64\home\laurent\qelectrotech_trunk C:\Users\laurent\Desktop cd /d %working_directory%\qelectrotech_trunk qmake mingw32-make -j9 -f Makefile.Release rem copie du fichier si la compilation a reussi if %errorlevel%==0 ( copy /Y release\qelectrotech.exe ..\packaging_windows\files\bin copy /Y release\qelectrotech.exe "..\qelectrotech-0.3+svn-x86-win32-readytouse"\bin xcopy /Y elements ..\packaging_windows\files\elements /s xcopy /Y elements ..\qelectrotech-0.3+svn-x86-win32-readytouse\elements /s xcopy /Y examples ..\packaging_windows\files\examples /s xcopy /Y examples ..\qelectrotech-0.3+svn-x86-win32-readytouse\examples /s xcopy /Y lang\*.qm ..\packaging_windows\files\lang /s xcopy /Y lang\*.qm ..\qelectrotech-0.3+svn-x86-win32-readytouse\lang /s xcopy /Y titleblocks ..\packaging_windows\files\titleblocks /s xcopy /Y titleblocks ..\qelectrotech-0.3+svn-x86-win32-readytouse\titleblocks /s cd /d %working_directory%\qt_qm xcopy /Y ..\packaging_windows\files\lang /s xcopy /Y ..\qelectrotech-0.3+svn-x86-win32-readytouse\lang /s cd /d %working_directory%\packaging_windows makensis.exe QET.nsi ) else ( echo La compilation a echoue. ) pause