Ein kleiner Hinweis noch: Verwende für C++-Code nicht die Dateiendung .c, sonst könnte man denken, daß es sich um C-Code handelt. Übliche Endungen für C++-Code sind .cpp oder .cxx.

Und noch was zum Makefile: Du kannst bei den einzelnen Zielen noch Abhängigkeiten vorgeben. Das sind Dateien, die benötigt werden, um ein bestimmtes Ziel bauen zu können. Wenn eine als Abhängigkeit genannte Datei seit dem letzten Aufruf von make verändert wurde wird das entsprechende Ziel neu gebaut.
Wenn du also für run als Abhängigkeit Calki angibst, dann wird erst das Ziel Calki ausgeführt, befor run durchläuft. Wenn du bei Calki als Abhängigkeit Calki.c angibst, dann wird das Programm nur dann neu gebaut, wenn Calki.c verändert wurde - womit du dir das clean bei all sparen kannst.

Das Makefile sieht dann so aus:
Code:
all: Calki

Calki: Calki.c
	g++ Calki.c -o Calki
	
run: Calki
	./Calki
	
clean:
	rm -f Calki
Wenn du jetzt make run eingibst, dann wird erst überprüft, ob die Datei Calki existiert. Wenn sie fehlt oder wenn sie älter ist als Calki.c wird das Programm (neu) kompiliert. Dann wird es ausgeführt.