CXX := clang++ CXX_FLAGS := -std=c++20 -isystem include/ -DJVALIDATE_USE_EXCEPTIONS TEST_DIR := tests/ INCLUDE_DIR := include/ HEADERS := $(shell find $(INCLUDE_DIR) -name *.h) TEST_HEADERS := $(wildcard $(TEST_DIR)*.h) TEST_SOURCES := $(wildcard $(TEST_DIR)*.cxx) TEST_OBJECTS := $(patsubst %.cxx, .build/%.o, $(TEST_SOURCES)) all: .build/bin/selfvalidate debug: CXX_FLAGS := $(CXX_FLAGS) -g debug: all clean: @ rm -rf .build .build/tests/%.o: tests/%.cxx $(HEADERS) $(TEST_HEADERS) @ mkdir -p .build/tests $(CXX) $(CXX_FLAGS) -c $< -o $@ .build/bin/selfvalidate: .build/tests/selfvalidate_test.o @ mkdir -p .build/bin/tests $(CXX) $< -o $@ -L/opt/local/lib -ljsoncpp -lgmock -lgtest