Im Rahmen meiner Recherchen schreibe ich viel Python- und MATLAB-Code, der niemals an andere verteilt werden muss. Selbst wenn ich meine Software verteilen muss, machen Python und MATLAB, die beide interpretiert werden, das Teilen relativ einfach.
Jetzt schreibe ich eine Software in C ++, die ich verteilen möchte. Ich habe einen Überblick darüber, wie die Software auf meinem eigenen Computer kompiliert wird, aber ich habe kein Verständnis dafür, was getan werden muss, um anderen Menschen die Software zu geben.
Zunächst mehr zu meinem Projekt: Ich schreibe Code, um Visualisierungen zu berechnen und anzuzeigen. Das Projekt basiert auf Grafiken, daher verwende ich die LEMON-Grafikbibliothek. Ich untersuche VTK- und OpenGL-Implementierungen, um die Visualisierung anzuzeigen. Ich möchte Python- und MATLAB-Bindungen für Benutzer dieser Umgebungen schreiben, um meine Software verwenden zu können, und ich möchte Windows- und Linux-Versionen erstellen (ich habe noch nicht an OS X gedacht ...).
Nehmen wir als Beispiel die LEMON-Diagrammbibliothek. Es ist eine Reihe von Headern zusammen mit einem kleinen gemeinsamen Objekt. Auf meinem Entwicklungssystem kompiliere ich die Bibliothek mit CMake und verknüpfe sie mit meinem Projekt.
Angenommen, ich möchte meine Software jemandem geben, der unter Windows ausgeführt wird. Ich möchte, dass sie ein Installationsprogramm herunterladen, auf ein oder zwei Schaltflächen klicken und sich um alles kümmern können. Ich möchte nicht, dass sie sich Gedanken über die Installation der LEMON-Bibliothek oder von OpenGL machen. Sie sollten nichts wissentlich zusammenstellen müssen. Ist das möglich?
Ich habe das Gefühl, dass es so ist, aber ich komme zu kurz, wenn ich nach Referenzen suche. Ich habe eine vage Vorstellung davon, dass ich, wenn ich eine Binärdatei unter Windows kompiliere, diese Binärdatei an jeden verteilen kann, der ein Windows-Betriebssystem ausführt. Aber was ist mit den Bibliotheken, die ich benutze? Ich schätze, ich muss sie unter Windows statisch verknüpfen, und das wird das dortige Abhängigkeitsproblem beheben. Aber im Hinterkopf habe ich gelesen, dass statisches Verknüpfen keine gute Praxis ist (oder ist dies nur unter Linux?)
Wie Sie sehen, bin ich etwas verloren. Ich würde mich über einen Anstoß in die richtige Richtung und einige Hinweise freuen, die Sie lesen sollten, wenn Sie etwas wissen!