Hallöchen!
Da ich schon länger in C++ programmiere habe ich mir ein eigenes include-Verzeichnis erstellt in welchem ich diverse Klassen (debug, error, usw...) lagere die ich immer wieder verwende. Bis jetzt habe ich immer einen Symbolischen Link zur Header- und einen zur Quelldatei in das eigentliche Programmierverzeichnis gelegt und immer dort kompiliert. Da das natürlich unnötig ist bin ich dazu übergegangen die Header- und Quelldateien zu lassen wo sie sind und dem Kompiler direkt zu sagen wo sie liegen. Dazu habe ich in meinem Makefile ein Macro mit dem Inhalt /Pfad/zum/include/Verzeichnis erstellt welches ich an -I und -l anhänge, damit sowohl die Headerdatei als auch die Object-Datei gefunden werden können.
Das Makefile sieht so aus:
TARGET = XML CC = g++ OBJ = main.o XML.o XML_Attribute.o XML_Element.o # Path to your include-directory EXTERNAL = /home/setsuna/Progs/include/ FLAGS = -I$(EXTERNAL) -l$(EXTERNAL) -Wall all: XML XML: $(OBJ) $(CC) -o XML $(OBJ) $(FLAGS) $(OBJ): $(subst .o,.cpp,$@) $(subst .o,.h,$@) $(CC) -c $(subst .o,.cpp,$@) $(FLAGS) .Phony : run run: $(TARGET) @./$(TARGET) .PHONY : clean clean: rm -f $(TARGET) rm -f $(OBJ)
Leider bekomme ich beim Linken der Object-Dateien folgende Fehlermeldung:
g++ -o XML main.o XML.o XML_Attribute.o XML_Element.o -I/home/setsuna/Progs/include/ -l/home/setsuna/Progs/include/ -Wall /usr/bin/ld: cannot find -l/home/setsuna/Progs/include/ collect2: ld gab 1 als Ende-Status zurück make: *** [XML] Fehler 1
Nun habe ich aber keine Ahnung woran das liegt. Der Pfad ist sicher korrekt:
setsuna@Magi:~/Progs/include$ pwd /home/setsuna/Progs/include
Kann mir jemand vielleicht sagen woran das liegen könnte?
Bitte um Hilfe Setsuna