Makefile

Dies ist ein minimales Makefile, um ein C++-Projekt zu compilieren. Durch das Generieren der Dependencies werden auch Änderungen an Header-Dateien erkannt.

Makefile
CXX = g++
CXXFLAGS ?= -g -Wall
DEFINES +=
INCLUDES +=
LIBRARIES +=
LDFLAGS :=
 
SRCDIR := src
BUILDDIR := build
TARGET := program
 
SOURCES := $(shell find $(SRCDIR) -type f -name "*.cpp")
OBJECTS := $(patsubst $(SRCDIR)%, $(BUILDDIR)%, $(SOURCES:.cpp=.o))
DEPENDENCIES := $(OBJECTS:.o=.d)
 
all: $(OBJECTS)
	$(CXX) -o $(BUILDDIR)/$(TARGET) $(LIBRARIES) $(OBJECTS) $(LDFLAGS)
 
$(BUILDDIR)/%.o: $(SRCDIR)/%.cpp
	@- mkdir -p $(dir $@)
	$(CXX) $(CXXFLAGS) $(DEFINES) $(INCLUDES) -MMD -MF $(patsubst %.o,%.d,$@) -c $< -o $@
 
-include $(DEPENDENCIES)
 
clean:
	rm -rf $(BUILDDIR)
 
.PHONY: all clean

Alternativ zum Erzeugen einer statischen Bibliothek

all: $(OBJECTS)
	ar -rsc $(TARGET).a $(OBJECTS)
  • Zuletzt geändert: 2015-08-28 14:37