Inhaltsverzeichnis
Psi+ unter MS Windows (MinGW)
Erforderliche Werkzeuge für den Bau-Prozess
- Qt SDK for Open Source C++ development on Windows. Beinhaltet Qt, MinGW, Qt Creator ~ 270 MB
- Win32 OpenSSL Libs - Krypto-Bibliotheken ~ 7 MB
- Open Source Perl for Windows ~ 30 MB
- Win32 Git - Hilfsprogramme für Git ~ 12 MB
- Slik SVN - Hilfsprogramme für SVN ~ 5 MB
- TortoiseSVN - Erweiterung für MS Windows Explorer (optional) ~ 20 MB
- Aspell Libs for msvc2008 - Rechtschreibprüfung Bibliotheken ~ 65 MB
Vorbereitungen vor dem Bauen, Umgebungsvariablen setzen und erforderliche Bibliotheken
- Installieren Sie die oben aufgelisteten Werkzeuge (Nummer 1 - 6).
- Extrahieren Sie das Verzeichnis QConf aus dem Archiv qconf-1.5-win32-qt460.zip nach C:\Qt
- Extrahieren Sie die Verzeichnisse include und lib aus dem Archiv lyx-windows-deps-msvc2008.zip nach C:\Qt\2010.02\mingw
- Unter Computer Properties (Start → Settings → Control Panel → System Properties → Advanced → Environment Variables) fügen Sie den Pfad zu der Variablen PATH hinzu (Sollten Sie die Software in einem anderen Pfad als oben angegeben installiert haben, so benutzen Sie bitte Ihren korrekten Pfad für alle Pfadangaben):
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
- Starten Sie eine Konsole *cmd.exe* als Administrator (Start → Run → cmd)
- Überprüfen des Installationspfades und der Variablen:
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++
- Wechseln Sie das Arbeitsverzeichnis zu *C:\Qt\2010.02\qt\examples\tutorials*
- Auf der Kommandozeile *cmd.exe* führen Sie *qmake* aus, und dann *mingw32-make*
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
- Entpacken Sie das Archiv mit der OpenSSL-Source-Code (aus § 8 der erforderlichen Werkzeuge) zu *C:\OpenSSL*
- In der Datei *e_os2.h* ändern Sie die Zeile:
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) \
- Benennen Sie die Datei aus *C:\Program Files\Git\bin\sh.exe* bis *C:\Program Files\Git\bin\sh.ex`_`*
- Run *cmd.exe*, wechseln zum Ordner *C:\OpenSSL* und starten Sie den Prozess der Erstellung durch den Befehl *ms\mingw32* (Paket von Absatz 4 muss installiert sein):
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
- Benennen Sie die Datei wieder ab *C:\Program Files\Git\bin\sh.ex`_`* bis *C:\Program Files\Git\bin\sh.exe*
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*.
- Kopieren Sie die Bibliothek *libeay32.dll*, *libssl32.dll* und die Inhalte der Ordner *C:\OpenSSL\out* auf den neu erstellten Ordner *C:\OpenSSL\bin*
- Kopieren Sie aus dem Ordner *C:\OpenSSL\out* *libcrypto.a*, *libeay32.a*, *libssl32.a* und *libssl.a* auf den neu erstellten Ordner *C:\OpenSSL\lib\MinGW*
Die OpenSSL ist jetzt für die Verknüpfung mit dem Psi + ready.
Psi+ im automatischen Modus bauen (empfohlen)
- Laden Sie das Skript make-psiplus.cmd in ein neues Verzeichnis (z.B. C:\psi-plus\build) herunter
- Starten Sie das Skript *make-psiplus.cmd* aus dem Verzeichnis *C:\psi-plus\build* und warten Sie auf das Ende seiner Ausführung
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
- Laden Sie den Psi Quellcode von dem offiziellen Psi git Repository herunter. Dazu starten Sie *cmd.exe* aus dem Verzeichnis *psi-git* und führen Sie die folgenden Kommandos in der angegebenen Reihenfolge aus:
git clone git://git.psi-im.org/psi.git cd psi git submodule init git submodule update
Vorbereitung des Psi Quellcodes zum Bauen
- Entfernen sie das Kommentarzeichen in der 3ten Zeile der Datei *psi-git/conf_windows.pri*:
Diese lautete
#CONFIG += qca-static
und wird zu
CONFIG += qca-static
- Ebenso die 26te Zeile :
Diese lautete
#DEFINES += HAVE_ASPELL
und wird zu
DEFINES += HAVE_ASPELL
- In der Datei *psi-git/third-party/qca/qca-ossl.pri* benennen Sie den Schlüssel *-llibeay32* um in *-leay32*
- Um Plugins einzuschalten, entfernen Sie das Kommentarzeichen vor der angegebenen Zeile in der Datei *psi-git/src/src.pro*:
Diese lautete
#CONFIG += psi_plugins
und wird zu
CONFIG += psi_plugins
- Optional: Um von der Release zur Debug Konfiguration umzuschalten, ändern Sie die 2te Zeile in der Datei *psi-git/conf_windows.pri* von
CONFIG += release
nach
CONFIG += debug
- Optional: Um automatisch eine Debug_Konsole mit Psi+ zu starten, fügen Sie die folgende Zeile in die Datei *psi-git/src/src.pro* ein:
CONFIG += console
- Optional: Um WebKit Unterstützung in Psi+ einzuschalten, fügen Sie die folgende Zeile in die Datei *psi-git/conf_windows.pri*ein:
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.
- Starten Sie *cmd.exe* in dem Verzeichnis *psi-git* und führen Sie die folgenden Kommandos in der angegebenen Reihenfolge aus:
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
- Öffnen Sie das Verzeichnis *psi-git* mit den heruntergeladenen Psi+ Quellcode Dateien
- In diesem Verzeichnis führen Sie die Kommandos qmake psi.pro und mingw32-make (oder make clean und make) aus
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):
- Für die release Konfiguration liegt die Dateigröße zwischen 5 MB und 12 MB
- Für die debug Konfiguration liegt die Dateigröße zwischen 30 MB und 60 MB
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
- Laden Sie den Quellcode des Plugins von hier herunter
- Kopieren Sie die Quellcode Dateien in das Verzeichnis psi-git/src/plugins/generic/conferenceloggerplugin
- Führen Sie das Kommando qmake conferenceloggerplugin.pro aus
- Führen Sie das Kommando mingw32-make -f makefile.release aus
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
- Das kompilierte Plugin conferenceloggerplugin.dll befindet sich in dem Verzeichnis psi-git/src/plugins/generic/conferenceloggerplugin/release