Organisation von Projektverzeichnissen



  • Hallo,

    ich bin ein Neuling in Sachen C. Mit dem Programmieren an sich habe ich keine Probleme und nun will ich mein erstes Projekt in C entwickeln. Da ich den Quelltext offen legen will, möchte ich mich nicht zu sehr blamieren. :p

    Deswegen meine Frage: Gibt es Programmierrichtlinien für den Aufbau meines Projekterzeichnisses? Kennt ihr gute OS-Projekte, bei denen ich mir den Aufbau abschauen könnte? Gibt es Tutorials oder Links dazu im Internet?

    Schon mal Danke für eure Antworten! 🙂



  • Die Frage hat ja nichts mit C zu tun. Ich verschiebe mal ins rudpf.



  • Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Naja, das wird recht unterschiedlich gehandhabt. Einige Projekte packen den Code einfach direkt in das Projekt-Verzeichnis, andere benutzen dafür ein Verzeichnis src oder den Namen des Projektes. Bei Libraries wird oft das Verzeichnis mit den Headern include genannt und vom Code-Verzeichnis getrennt.

    Dann gibt es oft ein Verzeichnis doc für Dokumentation und ein Verzeichnis tests für Tests etc.

    Aber schau dir mal ein paar Open Source Projekte an und mach das was dir am ehesten zusagt.



  • "Offiziellen" Standard kenne ich keinen.
    Ich persönlich verwende folgende Struktur, die ich mir von einem Arbeitskollegen abgeguckt habe der das dann auch bei uns in der Firma so eingeführt hat:

    Projekt/Library "sepp":
    
    /src            - Alle .c/.cpp Files + "nicht öffentliche" .h/.hpp/.inl Files
    /include        - Enthält nur das Unterverzeichnis "sepp" und ist ansonsten leer. Hier wird der include Pfad hingesetzt
    /include/sepp   - Alle "öffentlichen" Files (üblicherweise .h/.hpp/.inl)
    /build
    /build/vc71     - Build Files für vc71
    /build/vc80     - Build Files für vc80
    /build/xyz      - Build Files für xyz
    /obj
    /bin            - Alle output Files des Projektes, ausgenommen .lib Files
    /lib            - Alle .lib output Files des Projektes
    

    Unter /obj existiert eine Struktur ala /obj/compiler/projekt/konfiguration, also z.B. /obj/vc80/sepp/debug_lib.
    Was unter /bin nötig ist kommt darauf an wie man die Files benennt, ich brauche da nixmehr, da die Filenamen alle kürzel für den verwendeten Compiler und die Konfiguration (debug/release) enthalten. Sind diese Kürzel nicht im Dateinamen enthalten dann muss man da drunter auch noch unterverzeichnisse machen.
    /lib ist so organisiert wir /bin. Gehört eine .lib zu einer .dll heisst die .lib immer gleich wie die .dll (bis auf die Extension natürlich).
    Bei .exe Projekten entfällt natürlich das /lib Verzeichnis und meist auch das /include Verzeichnis.

    ----

    Falls das alles etwas viel auf einmal ist, ein Tip den ich wichtig finde: Mach ein "include" Verzeichnis wo nur ein Unterverzeichnis mit dem Projektnamen drin ist. In das Unterverzeichnis mit dem Projektnamen schmeisst du dann alle "öffentlichen" Header Files rein. Das hat den Vorteil dass man den include Pfad auf "sepp/include" setzen kann, und dall alle "sepp Headers" mit #include <sepp/blah.hpp> reinholen kann. Quasi sowas wie Namespaces für Header Files, sonst kann es schnell passieren dass es mehrere Files gleichen Namens im include Pfad gibt - ein Name wie "common.hpp" kommt schnell mal wo vor...



  • Danke an euch beide. Genau sowas wollte ich wissen. Habe jetzt:

    bin
    doc
    src
     include
      projektname
    test
    

    Bekomme ich das mit Visual Studio 8 auch so hingebogen?



  • Ja, wir arbeiten mit VC6, VC7.1 und VC8 - bei allen dreien geht es mehr oder weniger einach. Am einfachsten mit dem VC8.
    Guck dir die Variablen durch die der VC8 unterstützt, das "obj" Verzeichnis heisst bei uns z.B. nur

    ..\..\obj\vc80\$(ProjectName)\$(ConfigurationName)
    

    in allen Projekten, alle Konfigurationen etc. - vereinfacht die Sache ungemein.



  • Okay, jetzt habe ich nochmal ne Frage:

    In das include-Verzeichniss packe ich alle Header rein, die ich Projekt-Weit brauche. Nur wo stecke ich die .c Dateien hin, die die Implementierungen der in den Header-Dateien deklarierten Funktionen enthalten?


Anmelden zum Antworten