commit 9beff290ace862a6b44ce04626829f474250afd1 Author: radi0dev Date: Mon Feb 16 14:00:44 2026 +0300 init commit diff --git a/.astylerc b/.astylerc new file mode 100644 index 0000000..65f83f9 --- /dev/null +++ b/.astylerc @@ -0,0 +1,3 @@ +--style=1tbs # стиль фигурных скобок +--indent=spaces=2 # отступы по 2 пробела + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2a2a8ae --- /dev/null +++ b/Makefile @@ -0,0 +1,62 @@ +# Директории +SRC_DIR = src +INC_DIR = inc +LIB_DIR = lib +BUILD_DIR = build + +# Исполняемый файл +EXECUTABLE = exec + +# Компилятор и флаги +CXX = g++ +# Флаги препроцессора +CPPFLAGS = -I$(INC_DIR) -I/usr/local/include +# Флаги компилятора для C +CFLAGS = -pthread -Wall -Wextra -ggdb3 -O0 +# Флаги компилятора, специфичные для C++ +CXXFLAGS = $(CFLAGS) -std=c++17 +# Флаги компоновщика +LDFLAGS = -pthread -L$(LIB_DIR) +# Библиотеки +LDLIBS = -pthread -lm + +# Файлы +SOURCES = $(wildcard $(SRC_DIR)/*.cpp) +OBJECTS = $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.o,$(SOURCES)) + +# Форматтер +# Обрабатывает C/C++ файлы в src и inc. Если astyle не найден — выдаёт предупреждение, но не прерывает. +ASTYLE := $(shell command -v astyle 2>/dev/null || true) +SRC_FILES := $(wildcard $(SRC_DIR)/*.c $(SRC_DIR)/*.cpp $(SRC_DIR)/*.h $(SRC_DIR)/*.hpp) +INC_FILES := $(wildcard $(INC_DIR)/*.c $(INC_DIR)/*.cpp $(INC_DIR)/*.h $(INC_DIR)/*.hpp) + +# ========== + +# Основная цель +all: $(BUILD_DIR) $(EXECUTABLE) + +# Создание директории для сборки +$(BUILD_DIR): + mkdir -p $(BUILD_DIR) + +# Сборка исполняемого файла +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) $(OBJECTS) -o $(EXECUTABLE) $(LDLIBS) + +# Компиляция объектных файлов +$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp | $(BUILD_DIR) + $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@ + +format: +ifneq ($(ASTYLE),) + @echo "Running astyle..." + @$(ASTYLE) --options=.astylerc $(SRC_FILES) $(INC_FILES) +else + @echo "astyle not found — skipping format" +endif + +# Очистка +clean: + rm -rf $(EXECUTABLE) $(BUILD_DIR) + +.PHONY: all clean