Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

idontknow

unregistriert

1

11.07.2018, 18:04

Strukturierung Header & Source

Moin,

aus aktuellem Anlass eine nicht ganz Programmieren bezogene Frage, sondern mehr zu einer ordentlichen Strukturierung von Header- und Sourcefiles. In meinen eigenen Mini-Projekten war das nie relevant, insofern habe ich immer alle Files die ich benötige inklusive Code-Files direkt zum Projekt gelegt und die Welt war für mich in Ordnung. In (ich nenne es jetzt mal so) vernünftig strukturierten und größeren Projekten, an denen womöglich noch mehrere Leute mit versch. IDEs usw arbeiten macht eine solche Trennung aber sicherlich Sinn bzw. ist notwendig.
Sollte ich das mal versucht haben lief das meistens darauf hinaus, dass ich die Files in entsprechende Ordner verschoben und im Projekt einen Header- und Quellcode-Verweis auf den entsprechenden Ordner gemacht habe. Das scheint auch in dem aktuellen (Fremd-)Projekt auf meiner Hiwi-Stelle der Fall zu sein was dann darin geendet hat, dass <file.hpp> und "file.hpp" kreuz und quer und gleichbedeutend umeinander geworfen wurde. Insgesamt scheint das also keine besonders tolle Lösung zu sein!
Noch eine Möglichkeit wäre das ganze eben durch entsprechende Pfadangaben zu machen, dann hätte ich aber vor jedem include ein "../include/myFile.hpp" was ich so noch nie gesehen habe und auch unschön scheint.
Daher wollte ich mal fragen (gerade an die erfahreneren und berufstätigen Programmierer mit Projekterfahrung) wie das üblicherweise gehandhabt wird (was also Best-Practices sind).

Ich weiß, das ist vielleicht eine etwas "primitive" Frage aber mich würde es einfach mal interessieren wie das so in der Industrie gehandhabt wird.

Gruß,
idk

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »idontknow« (11.07.2018, 18:26)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

12.07.2018, 06:23

#include "relativer/Pfad/File.hpp"

Alles andere ist Käse. Die spitzen Klammern haben eine andere semantische Bedeutung. Pfad-Verweise in der IDE macht man eigentlich nur für externe Abhängigkeiten, nicht für interne Ordner.
Solange es sich außerdem nicht um eine Bibliothek handelt, sollten Header und Source-File beieinander liegen. Getrennte Header- und Source-Ordner machen bei Bibliotheken durchaus Sinn, weil man die Header herausgeben muss. Bei anderen Projekten ist das aber sehr hinderlich, weil du ja selbst schon festgestellt hast, dass man dabei aus dem Source in den Include-Ordner navigieren muss mit seinem relativen Pfad.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

3

12.07.2018, 08:18

Ich adressiere eigentlich immer per "../projekt/datei.hpp". Ich bevorzuge Builds, die komplett und autark aus der Versionsverwaltung rausfallen, und das geht einfacher, wenn man die Leute nicht dazu zwingt, noch irgendwelche Include-Pfade aufsetzen zu müssen.

Auf Arbeit benutzen wir ein absurd komplexes Meta-Buildsystem, das für jedes Projekt die Include-Pfade anhand diverser Dependency- und Versionvorgaben festlegt und daraus CMake-Files generiert. Außer die Lib kommt von extern, dann wird das Buildsystem der Lib eingesetzt... da trittst Du Dir dann wieder z.B. Autotools ein und fragst Dich, ob schon wieder 1995 ist. Da musst Du dann immer #include <name/space/mod/ule/Flupp.hpp> tippern, alles andere ist verboten. Die Software ist allerdings auch im Bereich von 50 Millionen Zeilen und wird von 300 Programmierern bearbeitet. Da muss man einiges sehr viel unbequemer behandeln, um nicht unter dem eigenen Gewicht zu kollabieren.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

idontknow

unregistriert

4

12.07.2018, 14:42

Moin,

schon mal Danke für die Antworten das hat schon geholfen! Das Projekt ansich wird auf eine Bibliothek + Tests raus laufen also macht eine Trennung in Header und Source Files wohl Sinn.

Kleine Randnotiz was mir aufgefallen ist und mich verwirrt: Ich hab die Dateien in include und src Ordner gesteckt musste aber nur den include Ordner hinzufügen. Ich hätte erwartet, dass ich den Src Ordner auch per Verzeichnis hinzufügen müsste aber komischerweise ist das nicht der Fall.. hat dafür jemand eine Erklärung? (Habe es auch einem frischen Projekt getestet und tatsächlich ist es nur für den include Ordner relevant der src Ordner wird immer automatisch mit einbezogen obwohl er das nicht sollte..)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

12.07.2018, 15:21

Source-Dateien werden kompiliert, wenn sie im Projekt drin sind. Header musst du einbinden, und bei der Suche nach denen werden die konfigurierten Pfade genutzt. Das Verzeichnis, in dem sich die gerade kompilierte Datei befindet, wird bei Verwendung von Anführungszeichen immer durchsucht, und zwar zuallererst.

Werbeanzeige