--- Makefile.orig 2025-01-23 15:20:57.000000000 +0800 +++ Makefile 2026-04-30 18:50:12.000000000 +0800 @@ -28,12 +28,20 @@ # - CXX: The C++ compiler, such as g++ or clang++. # - CXXFLAGS: Any extra user-specified compiler flags (can be blank). +CXX ?= g++ +AR ?= ar # Recommended compiler flags: CXXFLAGS += -std=c++11 -O # Extra flags for diagnostics: # CXXFLAGS += -g -Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -fsanitize=undefined,address +INSTALL ?= install +PREFIX ?= /opt/local +DESTDIR ?= +BINDIR ?= $(PREFIX)/bin +LIBDIR ?= $(PREFIX)/lib +INCDIR ?= $(PREFIX)/include # ---- Controlling make ---- @@ -45,7 +53,7 @@ # Stuff concerning goals .DEFAULT_GOAL = all -.PHONY: all clean +.PHONY: all install clean # ---- Targets to build ---- @@ -60,16 +68,22 @@ # Delete build output clean: - rm -f -- $(LIBOBJ) $(LIBFILE) $(MAINS:=.o) $(MAINS) + rm -f $(LIBOBJ) $(LIBFILE) $(MAINS:=.o) $(MAINS) rm -rf .deps +install: $(LIBFILE) $(MAINS) + $(INSTALL) -d "$(DESTDIR)$(BINDIR)" "$(DESTDIR)$(LIBDIR)" "$(DESTDIR)$(INCDIR)" + $(INSTALL) -m 755 $(MAINS) "$(DESTDIR)$(BINDIR)/$(MAINS)" + $(INSTALL) -m 644 $(LIBFILE) "$(DESTDIR)$(LIBDIR)/$(LIBFILE)" + $(INSTALL) -m 644 qrcodegen.hpp "$(DESTDIR)$(INCDIR)/qrcodegen.hpp" + # Executable files %: %.o $(LIBFILE) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $< -L . -l $(LIB) # The library $(LIBFILE): $(LIBOBJ) - $(AR) -crs $@ -- $^ + $(AR) -crs $@ $^ # Object files %.o: %.cpp .deps/timestamp