# 2024 by Alexander Popov # Имя исполняемого файла PROGRAM = example_binary # Компиляторы CC = gcc CXX = clang-16 # Флаги компиляции для исходных файлов C CFLAGS = -O2 -Wall # Флаги компиляции для исходных файлов C++ CXXFLAGS = -std=c++17 -O2 -Wall # Флаги для Си препроцессора (обычно включают пути к файлам и символы, определенные в командной строке), используемые C и C++ CPPFLAGS = -g # Флаги компоновщика LDFLAGS = -O2 -Wall -g # Библиотеки LDLIBS = -lstdc++ # Файлы исходных кодов SRC = lib.c main.cc # Объектные файлы OBJ = $(subst .cc,.o,$(SRC)) OBJ := $(subst .c,.o,$(OBJ)) RM = rm -f # Правило по умолчанию all: $(PROGRAM) # Сборка иисполняемого файла $(PROGRAM): $(OBJ) $(CXX) $(LDFLAGS) -o $@ $(OBJ) $(LDLIBS) # Сборка объектных файлов lib.o: lib.c lib.h main.o: main.cc lib.h # Очистка скомпилированных файлов clean: $(RM) $(OBJ) # Удаление программы distclean: clean $(RM) $(PROGRAM)