Makefile 931 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. .PHONY: build clean
  2. # 头文件
  3. INCS += -I.
  4. INCS += -I../swapi
  5. INCS += -I./include
  6. # 源文件
  7. SRCS += $(filter-out ../swapi/testLib.c, $(wildcard ../swapi/*.c))
  8. SRCS += ../swapi/subjects/serial/serial.c crc16.c mcu_ctrl_board.c
  9. # .o文件
  10. OBJS = $(SRCS:.c=.o)
  11. # 编译器
  12. CC = gcc
  13. CFLAGS = -Wall -fPIC -O2 -g
  14. DEFINS = -D_GNU_SOURCE
  15. # 单元测试时使用用, 开启调试模式, 正式编译时需要注释掉
  16. # DEFINS += -D_DEBUG
  17. target ?= x86_64
  18. ifeq ($(target),armv7hf)
  19. CC := arm-linux-gnueabihf-gcc
  20. AR := arm-linux-gnueabihf-ar
  21. endif
  22. # 库文件
  23. LIBS += -Wl,-Bdynamic -lc -lm -ldl -lpthread
  24. # 编译和清理
  25. build : libmcu_ctrl_board.a mcb_test.out
  26. %.o : %.c
  27. $(CC) $(DEFINS) $(CFLAGS) -c $< $(INCS) -o $@
  28. libmcu_ctrl_board.a : $(OBJS)
  29. $(AR) -cr $@ $(OBJS)
  30. mcb_test.out : $(OBJS)
  31. $(CC) $(DEFINS) $(CFLAGS) $(OBJS) mcb_test.c $(INCS) $(LIBS) -o $@
  32. clean :
  33. rm -rf $(OBJS) *.out *.a config/ log/ status/ var/