Das sollte also nicht annähernd so viel Mühe machen, aber ich versuche ein effizienteres Makefile mit Wildcard-Operatoren zu erstellen, im Gegensatz zu der langweiligen Methode, die ich benutzt habe, um jedes einzelne Objekt zu erstellen Datei und verknüpfen Sie sie dann miteinander. Aber aus welchem Grund auch immer, Immer wenn ich versuche zu laufen ‚machen‘ es gibt mir dies:Mehrfachfunktionsdefinition Fehler Makefile?
multiple definition of 'ScreenMgr::ScreenMgr()'
/path/to/ScrenMgr.cpp:4: first defined here
dann auch es gibt mir einen anderen Fehler unmittelbar nach dieser eine, die sagt:
undefined reference to main
collect2: error: ld returned 1 exit status
Obwohl, bevor diese Fehler, meine .o werden produziert und in das richtige Verzeichnis platziert, so dass der Fehler mit dem Linker sein muss. Ich kann die C++ - Quelle einbeziehen, wenn jemand denkt, dass es hilft, aber die Dateien sind praktisch leer, obwohl ich immer noch Header-Wachen einfüge, weil ich nur sicherstellen wollte, dass alles zuerst richtig verlinkt, damit ich damit umgehen kann Probleme wie diese, ohne sich um den Code kümmern zu müssen. Die Verzeichnisstruktur wie folgt aussieht:
-MsSolver
|--src
| |--main.cpp
| |--ScreenMgr.cpp
|--include
| |--ScreenMgr.h
|--build #empty directory
|
|--Makefile
|:
|--bin
und hier ist die Make-Datei:
Ihr Problem ist nicht Ihr Makefile. Ihr Problem ist in ScreenMgr.cpp oder ScreenMgr.h –
Sie haben wahrscheinlich einen richtigen Include-Guard in der Header-Datei. – Barmar
Oder vielleicht definieren Sie den Konstruktor in '.cpp' und' .h'. – Barmar