Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

ich habe ein komplexeres C++ Projekt, das cross-platform ist und mit mehreren DLLs für Linux, Windows und OSX gebaut wird. Zum erzeugen der DLLs und Executables nutze ich Scons.

Bei OSX erzeuge ich aus allen gebauten Komponenten eine Application Verzeichnis in dem ich dann alle Resources, DLLs, Executables und Konfigurationsdateien ablege. OSX behandelt dann dieses Verzeichnis als Paket, so dass man die Applikation direkt starten kann.

Bei Linux müsste ich dann ein RPM oder DEB Archiv bauen und die notwendigen Abhängigkeiten zu den DLLs dann über den Paketmanager auflösen lassen.

Wie würde man das sinnvoll bei Windows machen? Ich würde eine MSI Datei bauen und dort auch alle DLLs mit hineingeben.

Ich habe bei dem Projekt Abhängigkeiten zu Qt, Boost, Lapack, SQLite, Postgres und Lua. Ich sehe die Problematik, wenn ich nur das Executable ausgebe, dass der User dann entsprechend alle Abhängigkeiten selbst auflösen muss, das finde ich nicht unbedingt benutzerfreundlich.

Geschrieben

Naja du kannst unter Windows genauso alle benötigten DLLs mit in das Verzeichnis der Exe legen damit sie gefunden werden.

Ich habe bei dem Projekt Abhängigkeiten zu Qt, Boost, Lapack, SQLite, Postgres und Lua.

Bei solchen Sachen wäre der saubere Weg aber das dein Setup prüft ob diese Frameworks bereits installiert sind und wenn nicht sie mitinstalliert.

Geschrieben

Bei solchen Sachen wäre der saubere Weg aber das dein Setup prüft ob diese Frameworks bereits installiert sind und wenn nicht sie mitinstalliert.

An so etwas habe ich gedacht, aber ich komme aus der Unix- bzw OSX-Ecke und wüsste nicht, wie ich das machen kann. Bei Qt kann man ja fertige Packete runter laden, bei Boost wird es schwieriger, also dann heraus zu bekommen, ob die DLLs schon im System existieren.

Mein Gedanke war eigentlich, dass ich einfach in das Installationspaket einfach alle benötigten DLLs hinein lege, so dass diese passend zum Executable sind. Im schlimmsten Fall sind dann verschiedene DLLs mehrfach vorhanden, da sie aber im Verzeichnis des Executables liegen, sollte es passend sein.

Geschrieben

Ok ich hatte Boost bisher noch nie verwendet und hab mal gerade auf deren Homepage geguckt. Da würde ich es tatsächlich so machen das du die Dlls kopierst.

QT scheint das auch so zu handhaben Qt 4.7: Deploying an Application on Windows, obwohl ich mir sicher bin das bei Spielen die QT verwenden auch ein QT Setup bei mir gestartet wurde.

Bei manchen Sachen wirst du aber nicht drum herum kommen das entsprechende Setup mitzuliefern und zu starten oder den Benutzer es vorher selber installieren zu lassen weil das Setup noch mehr macht als nur die Dlls zu kopieren (beim einrichten einer Postgres Datenbank zum Beispiel).

Geschrieben

Ich wollte halt bei Windows im Setup den User auswählen lassen, ob die DLLs installiert werden oder eben nicht, d.h. der User kann wenn er möchte auch schon installierte DLLs verwenden (sofern sie dann vom Programm gefunden werden).

Bei OSX ist alles in dem Bundle drin und bei Linux wird es dann über den Paketmanager aufgelöst

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...