WINEMAKER(1) Wine Entwicklerhandbuch WINEMAKER(1) NAME winemaker - Erzeugt eine Build-Infrastruktur, um Windows Programme unter Unix zu kompilieren UBERSICHT winemaker [ --nobanner ] [ --backup | --nobackup ] [ --nosource-fix ] [ --lower-none | --lower-all | --lower-uppercase ] [ --lower-include | --nolower-include ] [ --mfc | --nomfc ] [ --guiexe | --windows | --cuiexe | --console | --dll | --lib ] [ -Dmacro[=defn] ] [ -Idir ] [ -Pdir ] [ -idll ] [ -Ldir ] [ -llibrary ] [ --nodlls ] [ --nomsvcrt ] [ --interactive ] [ --single-target name ] [ --generated-files ] [ --nogenerated-files ] [ --wine32 ] Arbeitsverzeichnis | Projektdatei | Workspacedatei BESCHREIBUNG winemaker ist ein Perl-Script um Ihnen das Konvertieren von Windows- Quellcode zu einem Winelib-Programm zu erleichtern. Zu diesem Zweck beherrscht winemaker folgende Operationen: - Quellcodedateien und Verzeichnisse in Kleinbuchstaben umbenennen, falls diese beim Ubertragen komplett in Grossbuchstaben angekommen sind. - Konvertierung von DOS- zu Unix-Zeilenenden (CRLF nach LF). - Include-Anweisungen und Resourcenreferenzen durchsuchen, um Backslashes durch Slashes zu ersetzen. - Wahrend des obigen Schrittes wird winemaker ebenfalls nach der angegebenen Datei im Includepfad suchen und die entsprechende Zeile, falls notig, mit der korrekten Gross-/Kleinschreibweise austauschen. - winemaker wird ebenso andere, exotischere Probleme wie die Benutzung von #pragma pack, afxres.h in nicht-MFC-Projekten und mehr untersuchen. Sollte etwas ungwohnliches vorkommen, wird winemaker Sie warnen. - winemaker kann eine ganze Verzeichnisstruktur auf einmal durchsuchen, schatzen welche ausfuhrbaren Dateien und Bibliotheken Sie zu erstellen gedenken, diese den passenden Quelldateien zuordnen und entsprechende Makefile generieren. - letztendlich wird winemaker eine globale Makefile fur den normalen Gebrauch erzeugen. - winemaker erkennt MFC-basierte Projekte und erstellt angepasste Dateien. - Existierende Projektdateien konnen von winemaker gelesen werden. Unterstutzt sind dsp, dsw, vcproj und sln-Dateien. ARGUMENTE --nobanner Unterdruckt die Anzeige des Banners. --backup Lasst winemaker Backups von allen Quellcodedateien anlegen, an denen Anderungen vorgenommen werden. Diese Option ist Standard. --nobackup Lasst winemaker keine Backups anlegen. --nosource-fix Weist winemaker an, keine Quellcodedateien zu andern (z.B. DOS zu Unix Konvertierung). Verhindert Fehlermeldungen bei schreibgeschutzten Dateien. --lower-all Alle Dateien und Verzeichnisse werden in Kleinschreibung umbenannt. --lower-uppercase Nur Dateien und Verzeichnisse, die komplett gross geschrieben sind, werden in Kleinschreibung umbenannt. HALLO.C wurde beispielsweise umbenannt werden, Welt.c jedoch nicht. --lower-none Keine Dateien und Verzeichnisse werden in Kleinschreibung umbenannt. Beachten Sie, dass dies nicht die Umbenennung von Dateien verhindert, deren Erweiterungen nicht unverandert verarbeitet werden konnen, z.B. ".Cxx". Diese Option ist Standard. --lower-include Wenn die Datei zu einer Include-Anweisung (oder einer anderen Form von Dateireferenz fur Resourcen) nicht auffindbar ist, wird der Dateiname in Kleinschreibung umbenannt. Diese Option ist Standard. --nolower-include Es werden keine Anderungen an Include-Anweisungen oder Referenzen vorgenommen, wenn die entsprechende Datei nicht auffindbar ist. --guiexe | --windows Legt fest, dass fur jedes gefundene, ausfuhrbare Target, oder Target unbekannten Typs angenommen wird, dass es sich um eine grafische Anwendung handelt. Diese Option ist Standard. --cuiexe | --console Legt fest, dass fur jedes gefundene, ausfuhrbare Target, oder Target unbekannten Typs angenommen wird, dass es sich um eine Konsolenanwendung handelt. --dll winemaker wird im Zweifelsfall annehmen, dass es sich bei einem unbekannten Target um eine DLL handelt. --lib winemaker wird im Zweifelsfall annehmen, dass es sich bei einem unbekannten Target um eine statische Bibliothek handelt. --mfc Teilt winemaker mit, dass es sich um MFC-basierte Ziele handelt. In solch einem Fall passt winemaker Pfade fur Header und Bibliotheken entsprechend an und verlinkt die Ziele mit der MFC- Bibliothek. --nomfc Teilt winemaker mit, dass es sich nicht um MFC-basierte Ziele handelt. Diese Option verhindert die Benutzung von MFC- Bibliotheken, selbst wenn winemaker Dateien wie stdafx.cpp oder stdafx.h begegnet, was normalerweise automatisch MFC aktivieren wurde, wenn weder --nomfc noch --mfc angegeben wurden. -Dmacro[=defn] Fugt diese Makrodefinition zur globalen Makroliste hinzu. -Idir Hangt das angegebene Verzeichnis dem globalen Include-Pfad an. -Pdir Hangt das angegebene Verzeichnis dem globalen DLL-Pfad an. -idll Fugt die angegebene Winelib-Bibliothek zur globalen Liste der zu importierenden Winelib-Bibliotheken hinzu. -Ldir Hangt das angegebene Verzeichnis dem globalen Bibliotheks-Pfad an. -llibrary Fugt die angegebene Bibliothek zur globalen Liste der zu verlinkenden Bibliotheken hinzu. --nodlls Diese Option teilt winemaker mit, nicht den Standardsatz an Winelib-Bibliotheken zu importieren. Dies bedeutet, dass jede DLL, die Ihr Quellcode nutzt, explizit mit -i an winemaker ubergeben werden muss. Die Standard-Bibliotheken sind: odbc32.dll, odbccp32.dll, ole32.dll, oleaut32.dll und winspool.drv. --nomsvcrt Setzt einige Optionen, die winegcc daran hindern, gegen msvcrt zu kompilieren. Nutzen Sie diese Option bei cpp-Dateien, die einbinden. --interactive Versetzt winemaker in einen interaktiven Modus. In diesem Modus wird winemaker Sie fur die Targetliste jedes Verzeichnisses nach Bestatigung und jeweils target- und verzeichnisspezifischen Optionen fragen. --single-target name Gibt an, dass es nur ein einziges Target gibt, namens name. --generated-files Weist winemaker an, eine Makefile zu erzeugen. Diese Option ist Standard. --nogenerated-files Weist winemaker an, keine Makefile zu erzeugen. --wine32 Weist winemaker an, ein 32-Bit Target zu erstellen. Dies ist nutzlich bei wow64-Systemen. Ohne diese Option wird die Standardarchitektur benutzt. BEISPIELE Ein typischer winemaker Aufruf: $ winemaker --lower-uppercase -DSTRICT . Damit scannt winemaker das aktuelle Verzeichnis und die Unterverzeichnisse nach Quellcodedateien. Jede Datei und jedes Verzeichnis, das ganz in Grossbuchstaben geschrieben ist, wird in Kleinbuchstaben umbenannt. Danach werden alle Quellcodedateien an die Kompilierung mit Winelib angepasst und Makefiles erzeugt. -DSTRICT gibt an, dass das STRICT-Makro gesetzt sein muss, um diesen Quellcode zu kompilieren. Letztendlich wird winemaker die globale Makefile erzeugen. Der nachste Schritt ware dann: $ make Wenn Sie an diesem Punkt Compilerfehler erhalten (was recht wahrscheinlich ist, ab einer gewissen Projektgrosse), sollten Sie den Winelib User Guide zu Rate ziehen, um Problemlosungen und Tipps zu finden. Bei einem MFC-basierten Projekt sollten Sie stattdessen folgenden Befehl ausfuhren: $ winemaker --lower-uppercase --mfc . $ make Mit einer existierenden Projektdatei lautet der passende Befehl: $ winemaker meinprojekt.dsp $ make TODO / FEHLER In einigen Fallen werden Sie die Makefile oder den Quellcode von Hand nachbearbeiten mussen. Angenommen, die fertigen Windows-Bibliotheken oder Binardateien sind vorhanden, konnte mit winedump ermittelt werden, um welche Art von ausfuhrbarer Datei es sich handelt (grafisch oder Konsole), gegen welche Bibliotheken sie gelinkt sind und welche Funktionen exportiert werden (bei Bibliotheken). All diese Informationen konnten dann fur das Winelib-Projekt verwendet werden. Weiterhin ist winemaker nicht sehr gut darin, die Bibliothek zu finden, die die Anwendung enthalt: Sie muss entweder im aktuellen Verzeichnis oder im LD_LIBRARY_PATHliegen. winemaker unterstutzt noch keine Messagedateien und deren Compiler. Fehler konnen im Wine Bugtracker gemeldet werden. AUTOREN Francois Gouget fur CodeWeavers Dimitrie O. Paun Andre Hentschel VERFUGBARKEIT winemaker ist Teil der Wine-Distribution, verfugbar im WineHQ, dem Hauptquartier der Wine-Entwicklung . SIEHE AUCH wine(1), Wine-Dokumentation und Support . Wine 9.7 Januar 2012 WINEMAKER(1)