Programm weitergeben



  • Hallo, ich habe für ein Praktikum ein Programm geschrieben.
    Dieses Programm läuft bei mir lokal einwandfrei, wenn ich es aus eclipse heraus starte.

    Nun frage ich mich, was ich alles tun muss, um das Programm so abzugeben, dass auch andere was damit anfangen können.

    Zum einen verwende ich einige "Header-Only" Bibliotheken wie Eigen.
    Auf meinem Aptosid-Rechner habe ich hier die libeigen Pakete installiert und in meinem Quellcode stehen nun includes wie:

    #include<eigen/Eigen/Dense>
    //frei erfunden, aber so ungefähr
    

    Das ist wahrscheinlich ungünstig, um es weiterzugeben. SOllte ich hier in meinem Projekt besser einen include - Ordner anlegen und die Header dort sichern?`

    Zum nächsten:
    Das Projekt wird bei mir von Eclipse aus gestartet und funktioniert.
    Jedoch ist ein Eclipse -Projekt sicherlich nicht der STandard zu Weitergabe.
    Ich habe wenig AHnung von der Materie, aber ich denke dass für C/C++ Projekte
    make oder cmake oder Ähnliches üblich ist.

    Nunja:
    Wie schon erwähnt, ich habe wenig Ahnung davon, was jetzt (nachdem das Programm bei mir läuft) alles zu tun ist, oder getan werden kann und erhoffe mir, dass ich hier ein paar Anregungen / Stichworte bekomme.

    Von der Praktikumsleitung (Nichtinformatiker) habe ich KEINE Vorgaben bekommen. Es soll halt funktionieren.


  • Mod

    Üblich wäre ein README in der die Abhängigkeiten stehen (die man sich dann selber installiert), dazu dann der Quellcode mit irgendeinem Buildsystem, z.B. CMake.

    Das ist nicht DAU-freundlich, aber dafür sehr Nicht-DAU-freundlich.



  • Also header only Bibliotheken erzeugen überhaupt keine Abhängigkeiten, da sie ja nun mal header only sind. Der Kram wird in deine Objekt Dateien reinkompiliert. Die header Dateien müssen auf dem Zielrechner natürlich nicht mehr vorhanden sein. Wenn Du für genau ein System verteilen möchtest und die Laufzeit lib statisch linken kannst, dann brauchst Du nur die Anwendung selber zu kopieren und fertig. Wenn du nicht statisch linkst musst Du halt je nach Compiler/ System die entsprechenden dynamischen Teile entweder mitdazupacken oder dem Nutzer sage was er braucht.
    Es ist halt auch von System zu System unterschiedlich was üblich ist. Unter Windows machst Du auch nicht-DAUs nicht glücklich, wenn irgendwas kompiliert werden soll. Da kommt die exe und die dlls in ein Installationspaket, wo jeder Depp nen Doppelklick drauf machen kann.



  • Also header only Bibliotheken erzeugen überhaupt keine Abhängigkeiten, da sie ja nun mal header only sind. Der Kram wird in deine Objekt Dateien reinkompiliert. Die header Dateien müssen auf dem Zielrechner natürlich nicht mehr vorhanden sein.

    Also ich soll den Quellcode weitergeben und das Programm muss auf unterschiedlichen Systemen (32/64 bit) laufen.

    Ich konnte durch kurzes googlen nicht ganz herausfinden, wie das mit object files ist, aber von dem was ich gelsen habe, dürfte die object-file Architekturabhängig sein.

    ... Grml, ich hab zu wenig Ahnung:
    Was ich eigentlich wissen möchte:
    Wenn ich das Projekt kompilieren lassen möchte, kann ich da irgend welche object-files reintun, oder müssen dafür die Header dabei sein?


  • Mod

    Wenn es neu compilert werden soll (und nur das ist portabel), dann müssen die Header irgendwie vorhanden sein, entweder bei deinem Quellcode dabei oder durch reguläre Installation der Bibliothek auf dem Zielrechner.


Log in to reply