Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- all: tidy run # что запускать при вызове `make` без параметров
- CXX_FLAGS = -Wall -Wextra -std=c++20
- BUILD = clang++ -o $@ $< $(CXX_FLAGS)
- DEBUG_MODE = -fno-omit-frame-pointer -g
- TASK_CPP = $(filter-out main.cpp, $(wildcard *.cpp))
- test: $(TASK_CPP) main.cpp
- clang++ -o $@ $^ -fsanitize=address $(DEBUG_MODE) $(CXX_FLAGS)
- # Запускается каждый раз, потому что такого выходного файла не создаётся
- # $(basename $<) — это $(basename multiplication.cpp) — это multiplication
- tidy: $(TASK_CPP)
- cd ../../build && ../run_linter.sh $(basename $<)
- run: test
- ./test
- # $@: цель сборки
- # $<: первая зависимость сборки
- # $^: все зависимости сборки
- # -fsanitize=... — диагностика
- # -Osize -O0 -O1 -O2 -O3 — уровень оптимизации
- # -fno-omit-frame-pointer — сохранять указатели на функции для диагностики
- # -g — отладочная информация
- code.i: code.cpp
- clang++ -E $< > $@
- o0: code.cpp
- $(BUILD) -O0
- o1: code.cpp
- $(BUILD) -O1
- o2: code.cpp
- $(BUILD) -O2
- o3: code.cpp
- $(BUILD) -O3
- asan: code.cpp Makefile
- $(BUILD) $(DEBUG_MODE) -fsanitize=address
- msan: code.cpp
- $(BUILD) $(DEBUG_MODE) -fsanitize=memory -fsanitize-memory-param-retval
- ubsan: code.cpp
- $(BUILD) $(DEBUG_MODE) -fsanitize=undefined
- lsan: code.cpp
- $(BUILD) $(DEBUG_MODE) -fsanitize=leak
- # make aaa выполнит этот сценарий, если есть файл aaa.cpp
- %: %.cpp
- $(BUILD) $(DEBUG_MODE) -fsanitize=address
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement