Rust (Lang) auf Windows kompilieren?
Hallo zusammen,
die Sprache Rust gefällt mir sehr und ich habe jetzt mittlerweile einiges damit gemacht. Nur, wenn ich zu dem Punkt komme, wo ich mal eine größere Anwendung entwickeln will, dann funktioniert es auf Windows nicht. (Also schon, aber nur mit ekeligen Umwegen).
Ich habe mir bereits dieses MSYS irgendwas heruntergeladen, doch es fühlt sich falsch an. Jedes Mal muss ich kompilieren, dann mit einem Tool, wie depends.exe die Abhängigkeiten ausfindig machen und dann kopieren. Geschweige denn von dem herausfinden, welche Libs ich benötige. Der Horror.
In C++ habe ich ein solches Vorgehen noch nie erlebt und habe das viel aktiver verwendet. Es fühlt sich einfach nur falsch an, als wenn Rust gar nicht für Windows sein soll. Die GUI Bibliotheken mal davon abgesehen, die kaum Möglichkeiten bieten oder all die veralteten Bibliotheken. Naja, ich will nicht meckern.
Ich find' Rust bisher super, doch leider kommt mir mein Vorgehen falsch vor. Deshalb frage ich hier. Weiß einer, ob es da bessere Wege gibt?
Vielen Dank schon mal im Voraus
Bei Nachfragen gerne Fragen :)
3 Antworten
Also online hätte ich dazu jetzt folgendes gefunden:
https://learn.microsoft.com/en-us/windows/dev-environment/rust/
Aber ansonsten würde ich entweder schauen, ob man sinnvolle Compile-Scripte schreiben kann oder WSL benutzen.
Ich habe aber auch noch nicht mit Rust gearbeotet und verstehe nicht, wieso das nicht nativ auf Windows funktioniert.
Gibt doch sicher Cross-Compiler für Linux, oder nicht?
Leider war der Link auch nicht hilfreich. Da wird alles für Windows only erklärt und das suche ich nicht. Crossplattform ist wichtig. Es geht bei dem ganzen nicht direkt um das kompilieren, sondern sobald ich ein crate (glaube ich nennt sich das) hinzufüge, welches auch Abhängigkeiten hat, werden diese nicht mit geliefert (bei Linux sind die meisten vorinstalliert). Das problem ist, dass man nicht gesagt bekommt, welche DLLs und libs gebraucht werden. Man muss raten oder die Anwendung scannen und wieder und wieder scannen, weil auch die Abhängigkeiten Abhängigkeiten haben können. Es ist nirgendwo beschrieben, welche man braucht. Es ist einfach nur umständlich
Das klingt jetzt irgendwie genauso wie bei C++-Projekten auch. Da muss man auch oft erst alles installeiren und erraten, was man installieren muss.
Vielleicht gibt es einen Package-Manager dafür? Gibt ja Windows-Package-Manager.
Aber evtl. geht das ganze dann nicht mit MSYS sondern nur nativ in Windows. (Aber das sollte man sowieso bevorzugen wenn es geht, denn MSYS ist meiner Erfahrung nach meist noch mehr Qual.)
Naja, ich programmiere ja Crossplattform. Mit Windows package manager habe ich bisher nichts gemacht. Wenn der aber dieselben Pakete bietet, wie mssys, dann wäre der vielleicht eine Lösung. C++ habe ich bereits benutzt. Da waren alle Abhängigkeiten bisher immer mit dabei. Vielleicht habe ich aber auch Glück gehabt mit dem gewählten Bibliotheken
C++ habe ich bereits benutzt. Da waren alle Abhängigkeiten bisher immer mit dabei.
Dann hattest du Glück, ja.
Gibt genug Fälle wo man erst beim compilen dann merkt, dass etwas fehlt. Wenn man Glück hat steht da, was fehlt, wenn nicht muss man in den Dateien nachschauen und rätseln. Und wenn es ganz blöd läuft bekommt man es dennoch nicht zum laufen.
Klingt etwas komisch, msys ist ja um binaries für Unix ähnliche Systeme auf Windows zum laufen zu bekommen. Bevor Du auf so was setzt würde ich eher einfach WSL nutzen.
Naja, nutzt du die Windows Version von rustup und Cargo für deine builds?
geht es dir um bestimmte crates die du nicht zum laufen bekommst oder generell auch simpel Anwendungen zu compilen?
An sich ist rust denke ich eher auf die technisch versierte Zielgruppe und eben auch Open Source Community ausgelegt, ergibt ja auch Sinn, dass da viel auf Linux passiert. Muss auch zugeben, habe noch nie versucht mit Rust auf Windows zu entwickeln, aber da Cargo auch relativ gut ist kann ich mir nicht vorstellen, dass es generell so ein Problem ist.
PS: mit UI Development wirst du mit Rust vermutlich auch einfach nicht viel Spaß haben. Die Sprache funktioniert einfach etwas anderes als andere Sprachen, was manche patterns vielleicht erschwert oder in Rust einfach hässlich macht. Es ist einfach mehr in Richtung Systems Programming angesiedelt und gibt weniger ui Fokus.
https://de.wikipedia.org/wiki/Cargo_(Software)
Ich denke ohne cargo wirst Du relativ wenig Spaß haben.
Cargo lädt keine Abhängigkeiten, wie DLL oder lib. Es holt sich lediglich die Basis
Sehe ich das richtig, daß Du arbiträre libraries (also nicht rust libs) in rust nutzen willst?
Nein, aber einige rust Bibliotheken haben Abhängigkeiten, die nicht automatisch mit geliefert werden
Den Link schaue ich mir nachher mal an, danke, den habe ich noch nicht gefunden. WSL würde nicht funktionieren, wenn das Programm für Windows (exe) gebaut werden soll