CXX ?= g++ ROOT := $(abspath .) CXXFLAGS := \ -std=c++17 \ -O2 \ -Wall \ -Wextra \ -Wpedantic \ -Iinclude \ -DFACE_CLUSTERING_ROOT=\"$(ROOT)\" LDFLAGS := \ -L$(ROOT)/lib \ -Wl,-rpath,'$$ORIGIN/../lib' LDLIBS := \ -lrknnrt \ -ldl \ -lpthread BIN_DIR := bin BUILD_DIR := build ENGINE_SOURCE := src/face_engine.cc ENGINE_OBJECT := $(BUILD_DIR)/face_engine.o FACE_RECOGNITION_SOURCE := src/face_recognition.cc FACE_RECOGNITION_OBJECT := $(BUILD_DIR)/face_recognition.o FACE_RECOGNITION_BINARY := $(BIN_DIR)/face_recognition FACE_SCAN_SOURCE := src/face_scan.cc FACE_SCAN_OBJECT := $(BUILD_DIR)/face_scan.o FACE_SCAN_BINARY := $(BIN_DIR)/face_scan .PHONY: all clean test info all: \ $(FACE_RECOGNITION_BINARY) \ $(FACE_SCAN_BINARY) $(BUILD_DIR): mkdir -p $(BUILD_DIR) $(BIN_DIR): mkdir -p $(BIN_DIR) $(ENGINE_OBJECT): $(ENGINE_SOURCE) include/face_engine.h | $(BUILD_DIR) $(CXX) $(CXXFLAGS) -c $< -o $@ $(FACE_RECOGNITION_OBJECT): \ $(FACE_RECOGNITION_SOURCE) \ include/face_engine.h \ include/face_config.h \ | $(BUILD_DIR) $(CXX) $(CXXFLAGS) -c $< -o $@ $(FACE_SCAN_OBJECT): \ $(FACE_SCAN_SOURCE) \ include/face_engine.h \ include/face_config.h \ | $(BUILD_DIR) $(CXX) $(CXXFLAGS) -c $< -o $@ $(FACE_RECOGNITION_BINARY): \ $(ENGINE_OBJECT) \ $(FACE_RECOGNITION_OBJECT) \ | $(BIN_DIR) $(CXX) $^ $(LDFLAGS) $(LDLIBS) -o $@ $(FACE_SCAN_BINARY): \ $(ENGINE_OBJECT) \ $(FACE_SCAN_OBJECT) \ | $(BIN_DIR) $(CXX) $^ $(LDFLAGS) $(LDLIBS) -o $@ test: all ./bin/face_recognition \ test/test.jpg \ test/test3f.jpg ./bin/face_scan \ test/test3f.jpg \ > /tmp/face_scan_test.json python3 -m json.tool \ /tmp/face_scan_test.json \ > /dev/null @echo "Tests completed successfully" info: @echo "ROOT=$(ROOT)" @echo "CXX=$(CXX)" @echo "CXXFLAGS=$(CXXFLAGS)" @echo "LDFLAGS=$(LDFLAGS)" clean: rm -rf $(BUILD_DIR) rm -f $(FACE_RECOGNITION_BINARY) rm -f $(FACE_SCAN_BINARY)