Makefile 709 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. CC = gcc
  2. # https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
  3. # https://stackoverflow.com/a/3376483
  4. CFLAGS = \
  5. -Wall \
  6. -Wextra \
  7. -Wfloat-equal \
  8. -Wundef \
  9. -Wshadow \
  10. -Wpointer-arith \
  11. -Wcast-align \
  12. -Waggregate-return \
  13. -Wcast-qual \
  14. -Wswitch-default \
  15. -Wswitch-enum \
  16. -Wconversion \
  17. -Wunreachable-code \
  18. -std=c11
  19. # -Werror \
  20. NAME = program
  21. TARGET_DIR = ./target
  22. SRC = $(wildcard lib/*.c)
  23. build:
  24. mkdir -p $(TARGET_DIR)
  25. $(CC) $(CFLAGS) -o $(TARGET_DIR)/$(NAME) $(SRC) main.c
  26. build_test:
  27. mkdir -p $(TARGET_DIR)
  28. $(CC) $(CFLAGS) -o $(TARGET_DIR)/$(NAME)_test $(SRC) tests.c
  29. run: build
  30. $(TARGET_DIR)/$(NAME)
  31. test: build_test
  32. $(TARGET_DIR)/$(NAME)_test
  33. clean:
  34. rm -r $(TARGET_DIR)