Makefile 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # Компилятор
  2. CC = gcc
  3. # Флаги компиляции
  4. CFLAGS = -Wall -Wextra $(shell pkg-config --cflags libmagic uchardet libarchive libavformat libavcodec libavutil libexif)
  5. # Имя исполняемого файла
  6. TARGET = cmfa
  7. # Исходные файлы
  8. SOURCES = complex_modules_file_analyzer.c $(wildcard module_*.c)
  9. # Объектные файлы
  10. OBJECTS = $(SOURCES:.c=.o)
  11. # Библиотеки
  12. LIBS = $(shell pkg-config --libs libmagic uchardet libarchive libavformat libavcodec libavutil libexif)
  13. # Цель по умолчанию: компиляция программы
  14. all: check_deps $(TARGET)
  15. # Проверка зависимостей
  16. check_deps:
  17. @command -v pkg-config >/dev/null 2>&1 || \
  18. (echo "Ошибка: pkg-config не установлен. Установите его: sudo apt install pkgconf"; exit 1)
  19. @pkg-config --exists libmagic uchardet libarchive libavformat libavcodec libavutil libexif || \
  20. (echo "Ошибка: Необходимые библиотеки не найдены."; \
  21. echo "Установите их с помощью: sudo apt install libmagic-dev libuchardet-dev libarchive-dev libavformat-dev libavcodec-dev libavutil-dev libexif-dev"; \
  22. exit 1)
  23. # Правило для сборки исполняемого файла
  24. $(TARGET): $(OBJECTS)
  25. $(CC) $(OBJECTS) -o $(TARGET) $(LIBS)
  26. # Правило для компиляции исходных файлов в объектные
  27. %.o: %.c
  28. $(CC) $(CFLAGS) -c $< -o $@
  29. # Очистка скомпилированных файлов
  30. clean:
  31. rm -f $(OBJECTS) $(TARGET)
  32. # Указываем, что clean и check_deps — не файлы
  33. .PHONY: clean check_deps