sublime-cpp/Makefile

25 lines
813 B
Makefile
Raw Normal View History

# Builds every .cpp in this tree into a binary next to its source.
# Incremental: a file is recompiled only when its .cpp is newer than its binary.
# Flags come from the compile_flags.txt nearest the source (the file clangd
# reads), falling back to the one at the repo root.
CXX := clang++
ROOT := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
SRCS := $(shell find $(ROOT) -name '*.cpp')
BINS := $(basename $(SRCS))
# The `@:` recipe is a deliberate no-op. Without it, make prints
# "Nothing to be done for 'all'" whenever everything is already up to date.
all: $(BINS)
@:
%: %.cpp
@flags=$$(cat $(dir $<)compile_flags.txt 2>/dev/null || cat $(ROOT)compile_flags.txt 2>/dev/null); \
echo "compiling $(notdir $<)"; \
$(CXX) $$flags $< -o $@
clean:
@rm -f $(BINS)
@echo "cleaned"
.PHONY: all clean