Probleme bei make-Datei (Überschreiben von Variablen)
-
Hallo,
ich erstelle momentan eine make-Datei für mein Projekt. Die Files liegen in verschiedenen Ordnern. Im Projektorder habe ich ein einziges Makefile, welches aus den Unterordnern von src die Datei /module.mak einbindet.Diese module.mak-Dateien sehen so aus (nicht 100%, sondern nur ein Ausschnitt)
DIR := src/include/ TMPSRCS := $(addprefix $(DIR), network.cpp Socket.cpp) CLIENTSRCS += $(TMPSRCS) SERVERSRCS += $(TMPSRCS)
DIR := src/client SERVERTMPSRCS := $(addprefix $(DIR)/, ClientSocket.cpp) CLIENTTMPSRCS := $(addprefix $(DIR)/, ClientConnection.cpp ClientSocket.cpp) CLIENTSRCS += $(CLIENTTMPSRCS) SERVERSRCS += $(SERVERTMPSRCS)
DIR := src/main SERVERTMPSRCS := $(addprefix $(DIR)/,server_main.cpp) CLIENTTMPSRCS := $(addprefix $(DIR)/,client_main.cpp) CLIENTSRCS += $(CLIENTTMPSRCS) SERVERSRCS += $(SERVERTMPSRCS)
DIR := src/server TMPSRCS := $(addprefix $(DIR)/,ServerSocket.cpp) SERVERSRCS += $(TMPSRCS)
Also habe ich einmal nur TMPSRCS oder SERVERTMPSRCS und CLIENTTMPSCRS.
Jetzt zum Problem:
Die Dateien werden im makefile in der Reihenfolge inkludiert:src/include/module.mak src/client/module.mak src/config/module.mak(noch nicht geschrieben) src/main/module.mak src/server/module.mak
In /include/module.mak wird nur TMPSRCS verwendet, in /client/module.mak werden die anderen beiden verwendet, in main/module.mak auch beide und in server/module.mak nur TMPSRCS. (Wie man oben sieht)
Was diese Variablen machen, sollte eigentlich klar sein: Zu SERVERSRCS bzw CLIENTSRCS wird der Pfad zu den benötigten .cpp-Dateien angehängt.
Wenn ich nach dem Inkludieren mir aber einmal SERVERSRCS ausgeben lasse, kommt nicht wie erwartet die Liste von allen benötigten Dateien aus include, client, server und main, sondern nur aus server und main. Das heisst, die Variablen beim Inklduieren von server/module.mak und main/module.mak überschrieben.
Versteht ihr mein Problem?