Wii, Unterordner einbinden (Makefile-Anfängerproblem)

      Wii, Unterordner einbinden (Makefile-Anfängerproblem)

      Hallo,

      Um mehr Übersicht im Programm zu bekommen hab ich entschlossen Unterordner zu machen in die ich meine Klassen stecken kann.



      Nun bekam ich den Error

      Quellcode

      1. c:/devkitpro/devkitppc/bin/../lib/gcc/powerpc-eabi/4.6.1/../../../../powerpc-eabi/lib/crtmain.o: In function `__crtmain':
      2. c:/Users/davem/projects/devkitpro/buildscripts/newlib-1.19.0/libgloss/rs6000/crtmain.c:17: undefined reference to `main'
      3. collect2: ld returned 1 exit status
      4. make[1]: *** [/d/da2011/TEWii/TEWii.elf] Error 1
      5. make: *** [build] Error 2


      Weshalb ich mir dachte es liegt an den #includes oder etwas anderem. Deshalb hab ich meine main.cpp von allen Klassen
      die sich im Unterordner befinden befreit mit dem folgenden Ergebniss:

      SOURCES := source

      im Make-File compiliert ohne probleme aber sobald ich die Unterordner mitcompiliern will (ohne dass ich irgendwo auf die Files in ihnen verlinke)


      SOURCES := source, source/screen, source/draw, source/objects

      hängts mich mit dem oben genannten Fehler auf.

      Das ganze is bestimmt ein Anfängerproblem aber ich komm von Java (nicht schlagen) und bin noch nicht so c++ fit.

      Meine Vermutung: Da ich mehr als 1 source-Ordner angebe weiS er nicht wo er das main.cpp finden soll. Das sollte man lösen können in dem man
      den Ort der main.cpp spezifischer angibt (das weiS ich nicht wo ich das kann) oder hier

      Quellcode

      1. CFILES:=$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
      2. CPPFILES:=$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))


      irgend einen rekursiven Befehl angibt der auch die Unterordner von "source" durchsucht.
      Hey,

      an sich ist das richtig. Wie wäre es mal mit lesen, was die Fehlermeldung sagt?
      Du hast Funktionen aus einer Datei herausgerissen, die auf andere Funktionen in dieser Datei zugreifen.

      Du musst jetzt HeaderDateien erstellen und diese in die Dateien einbinden, so dass die Funktion an sich schon mal existiert, aber später definiert wird bzw, wo anders.

      Der Fehler sagt eigentlich nur, dass in der Datei crtman.c keine Funktion namens main() gefunden wurde, logisch, die ist woanders definiert.

      • HBC + Softmod bis einschließlich 4.3
      • Unbrick - Bannerbrick/Semibrick/Pinnwandbrick/Themebrick - mit und ohne vorhandenem Softmod
      • Aktualisierung der Konsole
      • Einrichtung von SD Karten und Kanälen
      • Wii Hardwareumbau (Ersatzteile müssen vorhanden sein)

      Ahhhh ich hasse es wenn ich so auf der Leitung steh aber es will nicht...

      Ich hab herumgetestet und bin draufkommen dass der Fehler sofort auftritt wenn ich einen zusätzlichen source-folder
      im Makefile angebe, ansonsten compiliert er das Projekt ohne Probleme. Dieser Ordner kann auch keine Klassen enthalten und ich krieg trotzdem die Fehlermeldung.

      Vorallem weiS ich nicht worauf er hier hinverweist? Diesen Benutzer und Ordner gibs gar ned bei mir X_x

      Quellcode

      1. c:/Users/davem/projects/devkitpro/buildscripts/newlib-1.19.0/libgloss/rs6000/crtmain.c:17: undefined reference to `main'


      Mir sagt die Fehlermeldung dass die crtman.o im source folder nach der main.c oder main.cpp sucht und dort
      die funktion main() aufrufen will und ich glaub da ich mehrere Src-Folder angegeben hab schmeißts ihn oder er fällt eben auf den oben genannten Pfad zurück.

      Da ich die crtman.o aber ned ändern kann (soweit ich weiS) und ich mich weigere alle Klassen im Source-Folder zu halten such ich immer noch nach einer Lösung.

      Mfg Dre
      Edit: Einfach mal ohne Beistriche die Sourceangabe versuchen dann gehts :facepalm:

      Quellcode

      1. SOURCES := source source/draw source/objects source/screen scource/test

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dreloc ()