make merkwürdig...
-
Hallo!
Hab grad den halben Nachmittag mit make verbracht... bin grad dabei so ne art configure-system zu schreiben das in Moment noch auf ein makefile aufbaut (soll mal cmake werden, dass sollte möglich sein...).
Es ist nichts großartiges, aber es soll leichter sein configurierbaren source-code eben zu konfigurieren... wahrscheinlich wäre es eh besser gleich alles in cmake zu machen und auch jedem verzeichnis ein makefile oder makelist oder wies da heißt zu verpassen...
Okay, worums eigentlich geht: make ist komisch... hab noch nix drüber finden können aber scheinbar nimmt make manchmal implizit an dass ich c++ projekte hab... ist mir vorher noch nicht aufgefallen aber ist heut schon das 2te mal...
ich hab keinen einzigen befehl drinnen der den g++ oder gcc aufruft... und trotzdem tut make das... ist das normal?Ich weiß schon dass ihr mit dem code nicht wirklich viel anfangen könnt, aber vielleicht sieht ja einer von euch den fehler sofort... glaub makefiles sind ja auch empfindlich wo was steht...
hab die CC variable auf echo gesetzt, trotzdem macht make g++... auch wenn die variable nicht CC sonder XYZ oder so heißt macht make das...
Was mach ich falsch?
SRC= src/main.cc src/bla/bla.cc INCLUDES= -I./src/bla/ OBJ=$(SRC:.cc=.o) CC=echo TARGET= main.out .PHONY: clean git-clean config reconfigure %.pev: %.cc ./boyng.py eval -v $< -o $@ %.o: %.pev $(CC) -c $(INCLUDES) $(shell ./boyng.py def $<) $< -o $@ $(TARGET): config $(OBJ) $(CC) $(INCLUDES) $(OBJ) --output $@ config: ./boyng.py cfg src/ all: $(TARGET) git-clean: clean # rm -f *~ */*~ @find . -name \*~ find . -name \*~ -exec rm "{}" ";" @find . -name \*.pyc find . -name \*.pyc -exec rm "{}" ";" clean: find src/ -name \*.o -exec rm "{}" ";" rm -f $(TARGET) reconfigure: clean ./boyng.py cfg --reconfigure src/ make
[edit:]
außerdem folgt es meinen reglen nicht... (das eigentliche problem...) es übersetzt einfach die .cc files mit dem g++, obwohl make mein skript ausführen soll und damit eine pev datei erzeugen soll und dass dann mit dem g++ compilieren... (obwohl mir grad auffällt das der dann mekern wird, aber egal...)Habs jetzt zwar eh anders gemacht, würd mich aber trotzdem interessieren was da schiefläuft wenn make einfach beschließt meine regeln nicht zu befolgen...
-
Make hat ein paar "implicit rules". Unter anderem für %.c und %.cpp/cc.
Aber warum den Aufwand in Make investieren, wenn du ohnehin CMake nutzen willst? Die Formate sind ja nicht kompatibel.