Wann wird eine neuere Version von Flex für Windows zur Verfügung steht?
-
18-09-2019 - |
Frage
Ich bin mit flex (Lexer, nicht Adobe Flex) an einem Projekt. Allerdings möchte ich auch auf Windows-Plattformen kompilieren zu können, aber die Windows-Version 's neueste Version ist nur 2.5.4a, so wird es nicht meine Datei für 2.5.35 Version kompilieren. Und nein, ich kann nicht auf die höchsten unterstützten Windows-Version wechseln.
Wer weiß, über Pläne, die Windows-Version zu aktualisieren, oder einen Vorschlag auf Windows sowieso zu kompilieren haben?
Lösung
Sie können auf der Mailingliste fragen, oder engagieren im Flex-Projekt selbst. Ich denke, die Code-Basis für Flex für eine Weile statisch geblieben ist, aber ich weiß nicht, wer den Windows-Port unterhält. In der Zwischenzeit ...
Ich würde empfehlen, einschließlich der erzeugten Quelle in Ihrem Projekt.
- Erstellen Sie den Lexer auf einem Linux-System Ihre lex.c / lex.h Dateien (oder was auch immer) zu erzeugen,
- Fügen Sie diese Dateien in Ihre Quelle Win32 C, bevor Sie bauen
Wenn Sie keinen direkten Zugriff auf ein Linux-System verfügen, kann eine virtuelle Maschine eine gute Idee sein. Die Flex-Quelle sollte Beschwerde in einigen C-Standard sein, die auf Windows basiert, aber die meisten der POSIX Unterschiede verändert werden kann Win32 API ziemlich leicht zu verwenden.
Vielleicht verteilen, wie:
/src/source_files.c
/src/lex.l
/src/win32_lex/lex.c
Auf diese Weise Systeme mit ein modernes flex die Quelle, aus der lex-Datei erzeugen kann, und Windows-Systemen die Quelle kompilieren können die komplementären vorverarbeiteten C-Dateien verwenden.
Kurz die Verwendung einig User-Space-POSIX (Cygwin oder was auch immer).
Ein wenig erforderlich zwicken, aber ist nicht, dass die Portabilität für Sie
Andere Tipps
Windows-Builds von flex 2.5.35 tun gibt, aber leider sind sie nicht eigenständig. Sie können die mingw bauen herunterladen hier und die Cygwin bauen hier ; finden Sie unter auch eine andere Frage Stackoverflow. Jeder Build setzt voraus, dass ihre jeweilige (mingw oder Cygwin) Kernel installiert werden.