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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...