Ich bin beim Schreiben eines Makefiles fest, wenn meine Quellcodedateien über verschiedene Verzeichnisse verteilt sind.Makefile für Quelldateien über verschiedene Verzeichnisse schreiben
Die Verzeichnisstruktur ist wie folgt:
ich meine Quelldateien (.cc) in den Ordnern FOLDER1 und FOLDER2 und die Header-Dateien werden im Ordner mit dem Namen enthalten. Mein Makefile ist in FOLDER1 vorhanden.
program_NAME := myprogram
program_C_SRCS := $(wildcard *.cc)
program_C_OBJS := ${program_C_SRCS:.cc=.o}
program_OBJS := $(program_C_OBJS)
program_INCLUDE_DIRS := ../INCLUDE
program_LIBRARY_DIRS :=
program_LIBRARIES :=
CPPFLAGS += $(foreach includedir,$(program_INCLUDE_DIRS),-I$(includedir))
LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir))
LDFLAGS += $(foreach library,$(program_LIBRARIES),-l$(library))
.PHONY: all clean distclean
all: $(program_NAME)
$(program_NAME): $(program_OBJS)
$(LINK.cc) $(program_OBJS) -o $(program_NAME)
clean:
@- $(RM) $(program_NAME)
@- $(RM) $(program_OBJS)
distclean: clean
hier, wenn ich alle meine Quelle (.cc) -Dateien in FOLDER1 dann funktioniert es aber einige Dateien auf Umzug nach folder2 es Fehler von undefined reference gibt.
Bitte helfen Sie mir zu verstehen, wie Sie meine Makefile ändern, so dass ich alle meine Header-Dateien in einem Verzeichnis sagen kann INCLUDE und meine Quelldateien über verschiedene Verzeichnisse verteilen.
Danke !!!
@Haatschii .... Danke !!! Es funktioniert jetzt. –
Ich habe noch einen Zweifel ... Wenn ich 2 Verzeichnisse für Header-Dateien habe sagen INCLUDE1 und INCLUDE2. Wenn die Header-Datei in INCLUDE1 und INCLUDE2 ebenfalls vorhanden ist, sollte sie es von INCLUDE2 abholen und wenn es nicht in INCLUDE2 vorhanden ist, sollte es es von INCLUDE1 selbst abholen. Bitte helfen Sie bei der Änderung der obigen Make-Datei, um diese –
bearbeitet zu erreichen Antwort @KundanKumar – Haatschii