Makefile mit src/ und include/ Ordner
-
Hallo ich hoffe ich bin hier im richtig.
Ich möchte mit einer Makefile mein C++ Projekt erstellen:
CXX := g++ INCDIR := ../include CPPFLAGS := -g -std=c++0x -I$(INCDIR) LGFLAGS := -g -std=c++0x -lsfml-system -lsfml-window -lsfml-graphics -lGL -lGLU -lGLEW EXE := exec MAINFILES := src/main.cpp include/gamestate.h MAINOFILE := main.o CPPFILES := src/gameengine.cpp src/introstate.cpp src/menustate.cpp src/playstate.cpp HPPFILES := include/gameengine.h include/introstate.h include/menustate.h include/playstate.h OFILES := src/gameengine.o src/introstate.o src/menustate.o src/playstate.o $(EXE): $(MAINOFILE) $(OFILES) $(CXX) -o $(EXE) $(MAINOFILE) $(OFILES) $(LGFLAGS) $(MAINOFILE): $(MAINFILES) $(CXX) -c $(MAINFILES) $(CPPFLAGS) $(OFILES): $(HPPFILES) $(CPPFILES) $(CXX) -c $(HPPFILES) $(CPPFILES) $(CPPFLAGS)
Leider finden meine cpp Dateien die Includes nicht. Durch googlen habe ich ein Turorial gefunden das besagt man muss es so machen:
INCDIR := ../include CPPFLAGS := -g -std=c++0x -I$(INCDIR)
Klappt aber nicht, wie bekomme ich das zum laufen ?
-
Du musst dich ma entscheiden ../include oder ./include. Wo liegt den dein Makefile?
Als du das angefangen hast zu schreiben wohl noch im src/ Ordner, später musst du das wohl ma geändert haben
-
Nein ich schreibe so etwas zum ersten mal. So sieht es im Hauptornder aus:
makefile
src
include
-
ok, dann schau dir ma dein INCDIR an, das verweisst doch auf ../include und nicht auf ./include
-
Danke. Ich verstehe aber nicht warum hier nur 1 Punkt geschrieben wird.
-
Noch ein Tipp, damit du nicht immer die Pfade vor deinen Sources und Objekte schreiben musst.
Hier mal ein altes Makefile für einer meiner alten C-Projekte:
# Makefile # Compiler: gcc 4.6.1 # written by Lichtweite 2011, Germany #====================================================================== FINAL = construct.bin OBJ_DIR = obj vpath %.c src/common vpath %.c src/opengl vpath %.c src/gfx vpath %.c src # GLFW # ===================================================================== INC_GLFW = -Ilibs/GLFW/include LIB_GLFW = libs/GLFW/libs/linux/x64/libglfw.a # GLEW # ===================================================================== INC_GLEW = -Ilibs/glew/include LIB_GLEW = libs/glew/libs/linux/x64/libGLEW.a CFLAGS_GLEW = -DGLEW_STATIC CC = gcc INCLUDE = $(INC_GLFW) $(INC_GLEW) CFLAGS = $(INCLUDE) $(CFLAGS_GLEW) -Wall -O2 LIB = $(LIB_GLEW) $(LIB_GLFW) LFLAGS = $(LIB) -lGLU -lGL MODE = _OBJ = main.o error.o log.o file.o window.o program.o shader.o buffer.o load_tga.o OBJ = $(patsubst %,$(OBJ_DIR)/%,$(_OBJ)) ECHO_LINE = ------------------------------------------------------- all: prepare $(FINAL) $(FINAL): $(OBJ) @echo linking...$(OBJ) @$(CC) $^ -o $@ $(LFLAGS) $(MODE) @echo $(ECHO_LINE) @echo ready $(OBJ_DIR)/%.o: %.c @echo compiling...$@ @$(CC) -c -o $@ $< $(CFLAGS) @echo $(ECHO_LINE) prepare: @echo ======================================================= @echo BUILDING $(FINAL) written by Lichtweite @echo ======================================================= .PHONY: clean clean: @echo cleanup... @rm $(OBJ_DIR)/*.o @echo $(ECHO_LINE) @echo ready
-
-
Tolles Makefile Rüdiger, ich wusste es gibt an meinem noch was zu verbessern