C++ Makefile für verschiedene Executables - Eclipse CDT

RoseFlunder

Lieutenant
Registriert
Sep. 2009
Beiträge
799
Hallo,

ich möchte gerne innerhalb eines C++ Projekts (in Eclipse mit CDT) mehrere Source-Files mit jeweils eigenen main Methoden haben, also pro Source-File auch eine Executable. Einfach aus dem Grund, da es sich um mehrere kleinere Übungen handelt, die nicht aufeinander aufbauen, aber ich auch nicht für jede kleine Übung ein neues Projekt erstellen möchte.

Per Standard-C++-Projekt funktionierte dies nicht (automatische Makefile Erstellung), da mehrere main Methoden in einem Projekt in diesem Fall nicht zulässig sind.
Habe nun stattdessen ein C++ Makefile-Projekt erstellt und eine eigene Makefile geschrieben mit einem Target pro Executable.
Funktioniert soweit auch..., nur frage ich mich, ob das nicht auch einfacher geht?
Hatte schon ausprobiert mit Wildcards oder Variablen zu arbeiten, aber irgendwie bekomme ich das nicht hin.
Ideal wäre ja eine Variante, die alle .cpp Dateien aus dem src-Ordner nimmt und für jede eine Executable erstellt mit dem Namen der cpp Datei.

Meine bisherige Variante:
cdt.PNG

Evtl. hatte ja einer von euch mal das selbe Problem :)
 
Zuletzt bearbeitet:
Sowas in der Art habe ich bereits versucht, auch noch mal die erste Antwort auf der verlinkten Seite ausprobiert, aber irgendwas mache ich wohl falsch..

Also ich habe jetzt das %.out durch %.exe ausgetauscht.
Und zur Einfachheit vorerst die Source-Files aus dem src-Ordner direkt in den Projektordner geschoben, da ich auch nicht genau weiß, wie man dass dann mit verschiedenen Ordnern macht, also cpp Files aus src und .exe in Debug erstellen :D

Aber funktioniert nicht. Die Fehlermeldung sagt "make: *** No rule to make target 'test.exe', needed by 'all'. Stop."
Dachte dafür wäre aber extra dieses %.exe: Target?

makefile.PNG
 
Ich denke eigentlich, dass du nur in Zeile 7 das 'Makefile' wegnehmen müsstest. Keine Ahnung wofür das gut sein soll.

Edit: Mit dem Makefile solltest du dein anfängliche Verzeichnisstruktur beibehalten können. Ich bin leider auch nicht so mit Makefiles vertraut, weshalb ich nicht weiß ob das so best practice ist.
Code:
SRCDIR := src/
DSTDIR := Debug/
all: $(patsubst $(SRCDIR)%.cpp, $(DSTDIR)%.exe, $(wildcard $(SRCDIR)*.cpp))

$(DSTDIR)%.exe: $(SRCDIR)%.cpp
	g++ $< -o $@
 
Zuletzt bearbeitet:
Ok das sieht schon besser aus.
Also so funktioniert es:
makefile_2.PNG

Und wie müsste ich das anpassen, wenn jetzt noch die .cpp Dateien im src Ordner liegen?
Habe das hier versucht, was aber wohl nicht der richtige Ansatz ist..

makefile_3.PNG

Aber schon mal vielen Dank für die Tipps.

EDIT:
Vielen Dank, so funktioniert es :)
 
Zuletzt bearbeitet:

Ähnliche Themen

Antworten
7
Aufrufe
2.848
Zurück
Oben