Table of Contents

Psi+ unter MS Windows (MinGW)

Erforderliche Werkzeuge für den Bau-Prozess

  1. Qt SDK for Open Source C++ development on Windows. Beinhaltet Qt, MinGW, Qt Creator ~ 270 MB
  2. Win32 OpenSSL Libs - Krypto-Bibliotheken ~ 7 MB
  3. Win32 Git - Hilfsprogramme für Git ~ 12 MB
  4. Slik SVN - Hilfsprogramme für SVN ~ 5 MB
  5. TortoiseSVN - Erweiterung für MS Windows Explorer (optional) ~ 20 MB
  6. QConf - Hilfsprogramm zur Projekt Konfiguration, kompilierte Version qconf.exe hier) ~ 0.1 MB
  7. Aspell Libs for msvc2008 - Rechtschreibprüfung Bibliotheken ~ 65 MB
  8. UNSTABLE ccache (Spiegel)– ein Werkzeug zur Beschleunigung baut, ist hier mehr Informationen

Vorbereitungen vor dem Bauen, Umgebungsvariablen setzen und erforderliche Bibliotheken

C:\>path
PATH=C:\Qt\2010.02\qt\bin;C:\Qt\2010.02\mingw\bin;C:\OpenSSL\bin;C:\Program Files\SlikSvn\bin;C:\Program Files\TortoiseSVN\bin;C:\Qt\QConf;C:\strawberry\c\bin;C:\strawberry\perl\bin;C:\strawberry\perl\site\bin;C:\Program Files\Git\bin

und erzeugen Sie diese neuen Umgebungsvariablen ( mit Ihrem Pfad!):

QMAKESPEC=win32-g++
QTDIR=C:\Qt\2010.02\qt
OPENSSLDir=C:\OpenSSL

Anmerkung: die neuen variablen sind nur für neu gestartete Prozesse gültig, d.h. Sie müssen cmd als Administrator neu starten (Notfalls das System neu starten!).

Verifikation der Installation und der Performance von Qt durch Bauen einer Beispiel Test Applikation

C:\>qmake -v
QMake version 2.01a
Using Qt version 4.6.2 in C:/Qt/2010.02/qt/lib
C:\>echo %QMAKESPEC%
win32-g++
C:\Qt\2010.02\qt\examples\tutorials>qmake

C:\Qt\2010.02\qt\examples\tutorials>mingw32-make

...................
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT
-DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS
_QMAIN -I'../../../../include/QtCore' -I'../../../../include/QtGui' -I'../../../
../include' -I'../../../../include/ActiveQt' -I'tmp/moc/release_shared' -I'../..
/../../mkspecs/win32-g++' -o tmp/obj/release_shared/moc_finddialog.o tmp/moc/rel
ease_shared/moc_finddialog.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows -o release/part7.exe tmp/obj/rele
ase_shared/addressbook.o tmp/obj/release_shared/finddialog.o tmp/obj/release_sha
red/main.o tmp/obj/release_shared/moc_addressbook.o tmp/obj/release_shared/moc_f
inddialog.o  -L'c:/Qt/2010.02/qt/lib' -L'c:/Qt/2010.02/qt/lib' -lmingw32 -lqtmai
n -lQtGui4 -lQtCore4
mingw32-make[3]: Leaving directory `c:/Qt/2010.02/qt/examples/tutorials/addressb
ook/part7'
mingw32-make[2]: Leaving directory `c:/Qt/2010.02/qt/examples/tutorials/addressb
ook/part7'
mingw32-make[1]: Leaving directory `c:/Qt/2010.02/qt/examples/tutorials/addressb
ook'

Das Resultat des Bauprozesses steht in dem Verzeichnis C:\Qt\2010.02\qt\examples\tutorials\addressbook\part7\release

Ein erfolgreicher Bauprozess bedeutet, dass Qt korrekt installiert wurde und einsatzbereit ist.

Kompilieren von OpenSSL Toolkit

von

#ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION
# define OPENSSL_IMPLEMENT_GLOBAL(type,name)			     \

zu

#ifdef NEVER_OPENSSL_EXPORT_VAR_AS_FUNCTION
# define OPENSSL_IMPLEMENT_GLOBAL(type,name)			     \
C:\OpenSSL>ms\mingw32

...........................................
gcc -o tmp\prime.o -DMONOLITH -Ioutinc -Itmp -DL_ENDIAN -DDSO_WIN32 -fomit-frame
-pointer -O3 -march=i486 -Wall -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PA
RT_WORDS -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_M
DC2 -DOPENSSL_NO_CMS -DOPENSSL_NO_JPAKE -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_KRB5 -
DOPENSSL_NO_DYNAMIC_ENGINE      -c .\apps\prime.c
gcc -o tmp\cms.o -DMONOLITH -Ioutinc -Itmp -DL_ENDIAN -DDSO_WIN32 -fomit-frame-p
ointer -O3 -march=i486 -Wall -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PART
_WORDS -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC
2 -DOPENSSL_NO_CMS -DOPENSSL_NO_JPAKE -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_KRB5 -DO
PENSSL_NO_DYNAMIC_ENGINE      -c .\apps\cms.c
gcc -o tmp\openssl.o -DMONOLITH -Ioutinc -Itmp -DL_ENDIAN -DDSO_WIN32 -fomit-fra
me-pointer -O3 -march=i486 -Wall -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_
PART_WORDS -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO
_MDC2 -DOPENSSL_NO_CMS -DOPENSSL_NO_JPAKE -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_KRB5
 -DOPENSSL_NO_DYNAMIC_ENGINE      -c .\apps\openssl.c
gcc -o out\openssl  tmp\verify.o tmp\asn1pars.o tmp\req.o tmp\dgst.o tmp\dh.o tm
p\dhparam.o tmp\enc.o tmp\passwd.o tmp\gendh.o tmp\errstr.o tmp\ca.o tmp\pkcs7.o
 tmp\crl2p7.o tmp\crl.o tmp\rsa.o tmp\rsautl.o tmp\dsa.o tmp\dsaparam.o tmp\ec.o
 tmp\ecparam.o tmp\x509.o tmp\genrsa.o tmp\gendsa.o tmp\s_server.o tmp\s_client.
o tmp\speed.o tmp\s_time.o tmp\apps.o tmp\s_cb.o tmp\s_socket.o tmp\app_rand.o t
mp\version.o tmp\sess_id.o tmp\ciphers.o tmp\nseq.o tmp\pkcs12.o tmp\pkcs8.o tmp
\spkac.o tmp\smime.o tmp\rand.o tmp\engine.o tmp\ocsp.o tmp\prime.o tmp\cms.o tm
p\openssl.o  out\libssl.a out\libcrypto.a  -lwsock32 -lgdi32
Generating the DLLs and input libraries
Done compiling OpenSSL

Das Ergebnis des Builds finden Sie im Ordner gefunden werden *C:\OpenSSL*. Es gibt Bibliotheken kompiliert *libeay32.dll*, *libssl32.dll* und andere binäre Dateien im Ordner *C:\OpenSSL\out*.

Die OpenSSL ist jetzt für die Verknüpfung mit dem Psi + ready.

Psi+ im automatischen Modus bauen (empfohlen)

Wenn das Skript fehlerfrei ab lief, erscheint in C:\psi-plus\build das kompilierte und einsatzbereite Programm psi-plus.exe

Psi+ im manuellen Modus bauen (NICHT empfohlen)

Psi Quellcode besorgen

git clone git://git.psi-im.org/psi.git
cd psi
git submodule init
git submodule update

Vorbereitung des Psi Quellcodes zum Bauen

Diese lautete

#CONFIG += qca-static

und wird zu

CONFIG += qca-static

Diese lautete

    #DEFINES += HAVE_ASPELL 

und wird zu

    DEFINES += HAVE_ASPELL 

Diese lautete

#CONFIG += psi_plugins

und wird zu

CONFIG += psi_plugins
CONFIG += release

nach

CONFIG += debug
CONFIG += console
CONFIG += webkit

Anbringen von Patches an den Psi Quellcode

Bevor Sie GNU/Patch für Windows benutzen, beachten Sie bitte folgendes:

Unter MS-Windows muss die Patchdatei eine Textdatei sein, d.h. das Zeilenende-Zeichen muss CR-LF sein.
Eine Datei mit LF führt zu der Fehlermeldung: “Assertion failed, hunk, file patch.c, line 343,” unless the option ‘–binary’ is given.
patch -p1 < 0000-psiplus-aboutdlg.diff
patch -p1 < 0010-less-includes.diff
patch -p1 < 0020-psi-iconsets.diff
patch -p1 < 0030-psi-webkit.diff
patch -p1 < 0040-psi-muc-topic.diff
patch -p1 < 0050-psi-receipts.diff
patch -p1 < 0060-psi-popup-avatar.diff
patch -p1 < 0070-psi-entity-time.diff
patch -p1 < 0080-psi-mood-icons.diff
patch -p1 < 0090-psi-muc-change-affiliation.diff
.....................

Anmerkung: Bevor Sie Patches herunterladen und anbringen, überprüfen Sie unbedingt den Dateinamen anhand der aktuellen Liste.

Psi+ Bauprozess

Nach einiger Zeit (10 - 40 Minuten) suchen Sie nach dem Ergebnis der Kompilation psi.exe im Verzeichnis psi-git/src/release.

Anmerkung: Die Dateigröße von psi.exe kann unterschiedlich sein (Hängt von der debug/release Konfiguration ab):

Kompilieren der Plugins

Als Beispiel betrachten wir die Kompilation des folgenden Plugins.

Anmerkung: Für korrektes Kompilieren der Plugins müssen Sie zunächst den Psi Quellcode herunterladen und die Patches anbringen.

Conference Logger Plugin

C:\psi-plus\build\psi\src\plugins\generic\conferenceloggerplugin>qmake conferenceloggerplugin.pro

C:\psi-plus\build\psi\src\plugins\generic\conferenceloggerplugin>mingw32-make -f makefile.release

...................
C:/Qt/2010.02/qt/bin/moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_D
EBUG -DQT_PLUGIN -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I'
c:/Qt/2010.02/qt/include/QtCore' -I'c:/Qt/2010.02/qt/include/QtGui' -I'c:/Qt/201
0.02/qt/include/QtXml' -I'c:/Qt/2010.02/qt/include' -I'../../include' -I'c:/Qt/2
010.02/qt/include/ActiveQt' -I'release' -I'c:/Qt/2010.02/qt/mkspecs/win32-g++' -
D__GNUC__ -DWIN32 typeaheadfind.h -o release/moc_typeaheadfind.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT
-DQT_DLL -DQT_NO_DEBUG -DQT_PLUGIN -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_
THREAD_SUPPORT -I'c:/Qt/2010.02/qt/include/QtCore' -I'c:/Qt/2010.02/qt/include/Q
tGui' -I'c:/Qt/2010.02/qt/include/QtXml' -I'c:/Qt/2010.02/qt/include' -I'../../i
nclude' -I'c:/Qt/2010.02/qt/include/ActiveQt' -I'release' -I'c:/Qt/2010.02/qt/mk
specs/win32-g++' -o release/moc_typeaheadfind.o release/moc_typeaheadfind.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -Wl,-s -mthreads -Wl -shared -Wl,--out-implib,release/libconferenceloggerplug
in.a -o release/conferenceloggerplugin.dll release/conferenceloggerplugin.o rele
ase/typeaheadfind.o release/moc_typeaheadfind.o  -L'c:/Qt/2010.02/qt/lib' -lQtXm
l4 -lQtGui4 -lQtCore4
Creating library file: release/libconferenceloggerplugin.a