49 lines
1.3 KiB
Makefile
49 lines
1.3 KiB
Makefile
# 2024 by Alexander Popov <iiiypuk@fastmail.fm>
|
|
|
|
# Имя исполняемого файла
|
|
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)
|