22. Januar 2013

wt3.2.3 unter Windows7 in MSVS 2012

Rund ein Jahr ist es her, seitdem ich meinen Blogeintrag über Wt-Installation unter Windows geschrieben habe.

Mittlerweile hat sich viel getan, Visual Studio 2012 hat sein erstes Update bekommen, die Entwickler von Embweb haben Wt in Version 3.2.3 released und auch boost und CMake haben einige Versionssprünge hinter sich.

Also habe ich mir gedacht, ich schreibe eine Anleitung, wie man alles in der Neuesten Version unter Windows 7 64Bit zum Laufen bekommt :)

Im folgenden findet sich eine Anleitung der Installation sowie Lösungen für eventuell auftretende Probleme.
Folgende Versionen wurden von mir verwendet:

Als IDE verwende ich MSVS 2012, nach Installation des ersten updates, dieses wird für die nachfolgende Anleitung vorausgesetzt.

Prinzipiell existiert eine Anleitung seitens der wt Entwickler von embweb welche hier zu finden ist, doch werde ich mit meinen Worten die folgende Anleitung schreiben:

Zuallererst wird eine Boost Installation benötigt. Nachdem ich sie unter o.g. Link heruntergeladen und auf meine lokale Festplatte extrahiert habe, habe ich mich an die Anleitung unter diesem Link gehalten:
Mittels der Datei bootstrap.bat wird die boost engine gestartet und bereitet alles vor. Danach sollte eine Datei namens "b2.exe" im Ordner erscheinen. Wird diese ausgeführt, sollte boost und alle benötigten Ordner im Ausführungsverzeichnis erstellt werden.
Eventuell kann es sein, dass hierfür erst die Umgebungsvariablen gesetzt, oder das Ganze über die MSVS Commandline für Entwickler gestartet werden muss (siehe weiter unten).


Anschließend habe ich CMake installiert und das gui gestartet.
Wie üblich habe ich als Source Quellpfad den Ort des extrahierten Wt downloads angegeben
und als Zielort ein "build" Verzeichnis innerhalb der Sources.

Als Compiler habe ich "Visual Studio 11" ausgewählt, mit der Option "use deault native compilers". Erscheint ein Fehler, wie beispielsweise "“CL.exe” exited with code -1073741515 & cannot run ‘rc.exe’" oder "Das Programm kann nicht gestartet werden, da mspdb110.dll auf dem Computer fehlt ..." oder anderes, dass die commandline oder der test compile Vorgang nicht ausgeführt werden konnte, sind die Umgebungsvariablen üblicherweise falsch oder gar nicht gesetzt.
Angeblich kann man diesen Fehler umgehen, indem man CMake über die MSVS Commandline startet (üblicherweise über das Startmenü oder im Installationsverzeichnis \Common7\Tools\VsDevCmd.bat) 
jedoch wie ich unter der Webseite von Bryan erfahren habe, reicht es nicht immer diese zu setzen (über Rechtsklick auf "Computer" und im sich anschließend öffnenden Dialog links oben auf den Link "Erweiterte Systemeinstellungen" öffnet sich der alte, aus XP gewohnte Dialog, unter welchem im Tab "Erweitert" mittels "Umgebungsvariablen..." diese gesetzt werden können) sondern es kann sein, dass man zusätzlich noch einige .dlls aus dem Visual Studio Installationsverzeichnis kopieren muss.


Nach einem Klick auf "configure" erhielt ich wie erwartet die Fehlermeldung, dass Boost nicht gefunden wurde (z.B.: Unable to find the requested Boost libraries.), also musste ich unter dem Punkt BOOST_PREFIX den Pfad meiner boost Installation angeben.

Des Weiteren ist es in manchen Fällen notwendig, das Flag für WT_NO_BOOST_RANDOM zu deaktivieren, da es ansonsten beim kompilieren zu Fehlermeldungen kommt (a'la error C2039  'const char* const boost::random::random_device::default_token' is not a static member of 'class boost::random::random_device')
Dazu gibt es bereits ein geschlossenes Ticket auf http://redmine.webtoolkit.eu/issues/1070.

Auch kann es sein, dass man beim kompilieren einen Haufen Fehlermeldungen bekommt wie z.B. fatal error C1189: #error : The C++ Standard Library forbids macroizing keywords. Enable warning C4005 to find the forbidden macro oder dergleichen. Dies geschieht wie im wt forum beschrieben, da VS2012 keine Redefinition von Keywords mehr erlaubt und ist wie folgt zu beheben: Im textfile "CMakeLists.txt" im wt Sources Verzeichnis muss die Zeile  -Dinline=__inline entfernt werden. (einfach per search and replace über Ctrl+h).

Nun kann man die WT Solution unter dem angegebenen Ordner öffnen und im Visual Studio den compile Vorgang starten. Das Projekt ALL _BUILD sollte standardmäßig als Startup Projekt markiert sein und alles durchkompilieren.
Ist der Vorgang abgeschlossen, kann mittels dem INSTALL Projekt, wt endlich auf dem Rechner installiert werden. Hierbei ist wichtig, dass Visual Studio als Administrator gestartet wird! damit cmake Ordner anlegen kann, falls der Standard Pfad beibelassen wurde.
Es kann auch vorkommen, dass in der Datei "cmake_install.cmake" im build Verzeichnis unter "Destination" ein falscher Pfad steht (doppelte Laufwerkangaben, der cmake Installationspfad innerhalb der destination, etc...) 


So... damit wäre wt. in Version 3.2.3 mit allen Abhängigkeiten in der neuesten Version auf dem System installiert :D

Ich hoffe, jemandem damit weitergeholfen zu haben, wenn nicht habe ich zumindest eine Referenz zum Nachschlagen, falls ist ein anderes System mit wt bepacken muss ^^

Für Fragen, Anregungen steht euch die Kommentarfunktion zur Verfügung,
happy coding :)

- the incredible Leitman

Keine Kommentare: